# Q Agency — full content for LLMs Q Agency is a tech and AI consultancy delivering end-to-end AI and software solutions for mid-sized, large, and enterprise clients across 10 countries. Tagline: Business impact, beyond code. Core offerings: Artificial Intelligence & Data, Product Engineering, and Tech Consulting. Delivery models: Team as a Service, Fixed Price & Scope, Staff Augmentation, and Human-Agent Pods. Delivery stages: Explore, Assess, Build, Run. Facts from the site: 300+ senior tech experts, ~65% seniors, 4.8 Clutch rating (30+ reviews), clients on 3 continents, AWS Select Tier partner, ISO-certified quality/security/privacy, remote-first with HQ in Zagreb, voted Croatia’s Best Employer 4 times. Contact: https://q.agency/contact-us/ Source crawl of https://q.agency/ (HTML text extraction). Pagination index pages omitted. ======================================================================== # Q Agency URL: https://q.agency/ Q agency - tech consulting and software engineering company delivering custom software projects, enterprise AI solutions. Q Agency | Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Your long-term Partner for AI-Driven Software Development AI Hype Is Everywhere. We Know How To Make It Work. Explore AI One partner. Every stage of delivery. Discover our services. Artificial Intelligence and Data Helping companies turn data into something they can actually use: from defining AI strategy and building custom agents to automating workflows and integrating data systems. Product Engineering Design and engineering come together to create intuitive, scalable digital products — from UX/UI and product development to modernisation and cloud engineering. Tech Consulting Clear direction for complex technology decisions, from early validation and assessment to defined priorities and a clear roadmap for successful execution. Strategy, engineering and AI across the entire lifecycle. View all Services Why Clients Keep Choosing Q 1/3 “Q team are technical gladiators. Smart, relentless and precise. They move fast, think 10 steps ahead, and they care as much about the mission as we do. “ Joe de Sena Founder and CEO of Spartan “The Q team members often refer to HARVN as ‘our product’ and truly enjoyed developing it from scratch. It isn’t just a provider relationship; they feel like part of the HARVN team.” Jean-Claude Maillard Chief Executive Officer “Q is a very important innovation and disruptive partner for us. We are very, very happy.” Tomas Chamorro-Premuzic Chief Informational Officer, Manpower FLEXIBLE MODELS of cooperation We adapt how we work to fit each company’s needs. View All Cooperation Models Team as a Service Get a dedicated product team that takes full ownership of building, maintaining, and scaling your product. Fixed Price and Scope Work within a defined budget, timeline, and set of deliverables when your project requirements are clear from the start. Staff Augmentation Extend your in-house team with senior engineers, increase delivery capacity, and stay in full control. Human-Agent Pods Combine the speed of AI agents with senior human expertise, with our specialists in control of every critical decision. Proven Results for Global Clients Real projects. Real impact. Have a look at some of the work we’ve done for our clients. View All case studies Digitising Global Recruitment with an Enterprise Platform Designing and developing an enterprise assessment platform to support the digitalisation of global recruitment processes. View Case Study Engineering a Digital Platform for The Sun’s 30+ Million Readers Staff augmentation with The Sun’s in-house team, supporting the continuous development and performance optimisation. View Case Study Scaling a Leading UK Fintech Platform Through Long-Term Product Development An embedded team of engineers, QA specialists, and Product Owners supporting the ongoing development of Smart Pension’s fintech platform. View Case Study Building a Scalable Real-Time Drug Shortage Platform for multiple Markets A dedicated team of engineers and product specialists supporting the development of a real-time drug shortage platform. View Case Study From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Q IN A SNAPSHOT We are a tech and AI consultancy delivering end-to-end AI and software solutions for mid-sized, large and enterprise clients across 10 countries. 300+ Employees 65% Senior tech experts 4.8 Clutch rating · 30+ reviews 18 Clients on 3 continents Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # About Q Agency URL: https://q.agency/about-us/ Learn more about Q, a tech consulting and software engineering company delivering custom software projects, enterprise AI solutions, and dedicated delivery teams. About Q Agency | Tech Consulting & Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > About us About Q: Technology Experts Shaping Complex Digital Solutions Strategic technology partner delivering lasting value through long-term partnership. who we are Q is a tech and AI consultancy with over 300 experts delivering end-to-end solutions for clients across 10 countries from offices in London and Zagreb. +65% Senior Experts 9.3/10 Client Satisfaction Rate 300+ IT Professionals 4.8/5 Clutch Score with 30+ reviews 2000+ Talent Pool Across 5 Countries 4x Voted Croatia’s Best Employer Our story Founded in 2013 in Zagreb with a simple belief. That software built right can change how businesses grow, and Q has spent over a decade turning that conviction into results. What started as a small team in Croatia grew at a pace few saw coming: by 2019, Deloitte ranked Q the #1 fastest-growing software agency in Europe. That momentum never stopped. Today, with offices in Zagreb and London, Q has helped over 200 clients reach their goals, from Fortune 500 companies to the world’s leading tech startups. Over the past two years, AI has become a core part of that expertise. Q has invested heavily in both people and technology, building dedicated AI capabilities and infrastructure to design, build, and run AI systems in production. The ambition hasn’t changed. The scale has. Our services One partner. Every stage of delivery. View All Services Artificial Intelligence and Data Helping companies turn data into something they can actually use: from defining AI strategy and building custom agents to automating workflows and integrating data systems. Product Engineering Design and engineering come together to create intuitive, scalable digital products — from UX/UI and product development to modernisation and cloud engineering. Tech Consulting Clear direction for complex technology decisions, from early validation and assessment to defined priorities and a clear roadmap for successful execution. MEET THE MANAGEMENT 1/3 CBO Vedran By combining business strategy and product development, this means he speaks the language of outcomes, not just deliverables. With a clear view of both the client’s world and the build itself, Vedran connects business needs with what great software can actually achieve and makes sure nothing gets lost along the way. Q’s unofficial endurance champion, he somehow juggles time zones, clients, and back-to-back calls with AirPods seemingly always in and a meeting probably already underway. LinkedIn Email CEO Harry From developer and lead architect to head of engineering and now CEO, Hrvoje has worked through every layer of the technical stack. That depth is a big reason Q’s engineering culture is as strong as its business performance. He connects product vision with technical execution and keeps strategy grounded in what can actually be built well. Still the person in the room who reads the documentation, with strong opinions on architecture and a sharp eye for a good pull request. LinkedIn Email CFO Goran As COO, Goran keeps the operational side of Q running smoothly, from financial oversight to internal processes, so delivery teams can stay focused on client work. His rigour with numbers helps keep projects financially sound, timelines realistic, and details from slipping through the cracks. Off the clock, he swaps spreadsheets for ski slopes, basketball, and a quietly disputed legacy as office pool champion. LinkedIn Email Why Choose Q? Our philosophy is straightforward: we deliver tailored solutions, focus on lasting partnerships, and cultivate a supportive environment for our team. Take a look below to see our focus areas and how we make it all happen. Delivery Excellence Q consistently outperforms inherited vendors through strong documentation, IP handling, modern practices, and disciplined delivery supported by CoP and CoE frameworks. AI & Innovation Leadership Our AI-first approach accelerates development, reduces cost, and improves accuracy through AI-assisted workflows, testing, and continuous R&D investment . People & Culture Advantage Backed by four Best Employer Awards , low ~7% attrition, and a 2,000+ talent pool across five countries, Q delivers stable, scalable, English-proficient teams. End-to-End Capability Q covers the full SDLC : from discovery to maintenance, ensuring continuity, fast team transitions, clear IP ownership, and seamless multi-vendor collaboration. Commercial Advantage We deliver lower total cost of ownership through faster ramp-up, delivery continuity, flexible engagement models, and experience across 200+ projects for 100+ clients. Recognitions & Awards Independently verified by the world’s leading business and technology rating bodies, year after year. Financial Times’ Top 200 Fastest-Growing Companies — 2020 4 Times Best Employer Award Top B2B Companies Global 2021 – 2024 RedDot Tech Fast 500 EMEA EY Entrepreneur of the Year — 2021 European Business Awards German Innovation Awards Trusted by Global Brands The trust of global brands is earned through consistent delivery, strong collaboration, and work that performs. Facts. Where to Find Us Zagreb HQ Reljkovićeva 4, 10000 Zagreb, Croatia Open google maps London Borough Yards, 13 Dirty Lane, London, SE1 9PA Open google maps Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI at Q - Tech Consulting and Software Engineering URL: https://q.agency/ai-at-q/ Learn more about AI at Q and how the right AI solutions can help your business grow, scale and innovate with Q as your digital partner. AI at Q | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Artificial Intelligence at Q AI Isn’t Just a Buzzword at Q. We build, deploy and operate AI systems that solve real business problems. Agentic Sprint Validate your AI idea in just 10 days. AI Ops Platform We run your AI in production. Multi-Agent Orchestration Integrated into your workflows. Not bolted onto them. Human-Agent Pods AI speed. Human expertise. Agentic Sprint VALIDATE YOUR AI IDEA IN JUST 10 DAYS. Read More 01. Frame DAYS 1–2 Pick the one use case with real business value Define success metrics the board will recognise Confirm data access and technical feasibility We don’t build until case and the data are real. 02. Build DAYS 3–8 A working agent on your data in your environment Reasoning, tool use and memory, not a demo Guardrails a human-in-the-loop from day one A prototype you can actually pressure-test. 03. Prove DAYS 9–10 Measured against the KPIs you set on day one A costed roadmap from prototype to production A clear build, buy or partner decision You leave with a decision, not a maybe. WHAT YOU GET 01. Go / No-Go Decision A clear recommendation based on measurable results, so you know whether to scale the solution or stop before investing further. 02. Real Data We focus on the AI opportunity with the clearest business value, so the sprint starts with direction instead of guesswork. 03. Validated Business Case Proven business value with defined KPIs, real workflow testing, and a clear understanding of the expected ROI and operational impact. 04. Working Prototype A functional AI agent built on your workflows, data, and business environment, not a scripted demo or proof of concept. 05. Production Roadmap A practical implementation plan covering architecture, integrations, governance, and the next steps required to move from prototype to production. Blog post Proving the Value of AI The challenge isn’t ambition. It’s proving whether an AI use case can deliver measurable business impact before investing months of time, budget, and internal resources into a full-scale build. That’s exactly what the Agentic Sprint is designed for: validating real AI workflows in real operational environments. Multi-Agent Orchestration Integrated into your workflows. Not bolted onto them. 01. Built for a Role Embedded in the workflow of a specific function. Lifts throughput where the work is high-volume and judgement-heavy. 02. Built for a Domain Multi-agent systems shaped by the rules, data and compliance of one industry. Sit inside the client’s stack. 03. Built for a Process Agents that sit in the gaps between systems and take over the manual handoffs no one owns, connecting to the client’s existing stack. Multi-agent system specialised in working together inside your processes, fine-tuned on your data and deployed to production. Explore Multi-Agent Orchestration AI Ops Platform WE RUN YOUR AI IN PRODUCTION. WHAT THE PLATFORM CONTROLS 01. Cost Spend per agent, token optimisation, break-even visibility. 02. Traceability & Audit Full request & decision logging, agent action audit trail annex IV / DORA evidence. 03. Accountability Named owner per agent, human-gated approval, escalations & oversight. 04. Performance & Drift Live monitoring, drift detection, retraining triggers. Technology provides the visibility. Our team turns it into action. Q Team Running the Platform 24/7 monitoring & alerting Retraining cycles Improvement backlog vs your KPIs Incident & regulatory response Security review & agent optimisation Human-Agent Pods We build with you, faster. 01. Mirrored Pods One specialist works alongside one dedicated agent, enabling parallel execution, dual control and audit-grade traceability. This model is best suited to complex or regulated environments where oversight cannot be compromised. 02. Compressed Pods One senior generalist coordinates two or three agents to reduce handovers, lower blended cost and maintain a complete view of delivery. It works best for predictable work such as MVPs, internal tools and repeatable product tasks. AI agents speed up the work, while our senior specialists stay in control of every critical decision. Explore Human-Agent Pods Why Choose Q? Large Local AI Models All AI development and testing is performed within our infrastructure. Our software development process is enhanced by large local AI models that support specification, code generation, testing, and review — enabling our teams to focus on quality, validation, and delivering exceptional products. AI Academy To continuously strengthen our capabilities, we run an internal AI Academy. Over 100 Q’s experts have already completed the program, specializing in modern AI agent development, with top performers earning AWS AI certifications. Private Infrastructure: Nvidia H200 GPU Cluster We invested in our own AI infrastructure, powered by a dedicated NVIDIA H200 GPU cluster. This allows us to train, fine-tune, and deploy AI models entirely on our own hardware — ensuring speed, independence, and maximum data security. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Ready to put AI to work in your business? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Contact Us URL: https://q.agency/contact-us/ Let’s get started! Contact us so we can schedule a call and learn more about your business needs and your project. Contact Us | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Contact us Contact us Let’s get started! Please fill in the form below so we can learn more about you and your project or just schedule a call. If you need any further assistance or have additional questions, just send us an email to hello@q.agency. Request project development (#9) First name Last name Business email Country Select your country here Afghanistan Aland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bonaire, Saint Eustatius and Saba Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cabo Verde Cambodia Cameroon Canada Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Cook Islands Costa Rica Croatia Cuba Curaçao Cyprus Czech Republic Democratic Republic of the Congo (Kinshasa) Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Eswatini Ethiopia Falkland Islands Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and McDonald Islands Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Isle of Man Israel Italy Ivory Coast Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo Kuwait Kyrgyzstan Laos Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao S.A.R., China Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island North Korea North Macedonia Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Republic of the Congo (Brazzaville) Romania Russia Rwanda Réunion Saint Barthélemy Saint Helena Saint Kitts and Nevis Saint Lucia Saint Martin (Dutch part) Saint Martin (French part) Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia/Sandwich Islands South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkmenistan Turks and Caicos Islands Tuvalu Türkiye Uganda Ukraine United Arab Emirates United Kingdom (UK) United States (US) United States (US) Minor Outlying Islands United States (US) Virgin Islands Uruguay Uzbekistan Vanuatu Vatican Venezuela Vietnam Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe Company Business title (optional) What budget do you plan to allocate? Select budget range here $50,000 and under $50,000-$200,000 $200,000-$1,000,000 $1,000,000+ What are you interested in? Strategy UX & UI Design Development Product Scaling Team Scaling Strategic Support Product Innovation Other Tell us more about your project (optional) This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply. Send Your Message Where to Find Us Zagreb HQ Reljkovićeva 4, 10000 Zagreb, Croatia Open google maps London Borough Yards, 13 Dirty Lane, London, SE1 9PA Open google maps General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Tech Consulting, AI & Software Engineering Services URL: https://q.agency/services/ Explore Q’s end-to-end technology services: from consulting and product strategy to design, software development, and AI. Tech Consulting, AI & Software Engineering Services | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services Our Services: From Strategy to AI-Powered Production One Partner. Every Stage of Delivery. Strategy, engineering and AI across the entire lifecycle. Artificial Intelligence and Data Helping companies turn data into something they can actually use: from defining AI strategy and building custom agents to automating workflows and integrating data systems. Product Engineering Design and engineering come together to create intuitive, scalable digital products — from UX/UI and product development to modernisation and cloud engineering. Tech Consulting Clear direction for complex technology decisions, from early validation and assessment to defined priorities and a clear roadmap for successful execution. AI and data FROM validating OPPORTUNITY TO creating value Everyone Is Doing AI. We Are Doing It Well. How do we do it? We start by proving what’s worth building, using real data and measurable business goals. Then we build, deploy and run AI in production, backed by senior engineers, our own AI infrastructure and human oversight where it matters. Explore AI and Data Services Product engineering FROM PRODUCT VISION TO REAL-WORLD PERFORMANCE Great Products Need More Than Great Code. WHAT MAKES THE DIFFERENCE? Design and engineering work as one, with senior experts covering the full product lifecycle. From UX and development to modernisation and cloud, every decision is made with usability, performance and long-term product value in mind. Explore Product Engineering Services Tech consulting FROM UNCERTAINTY TO A CLEAR WAY FORWARD The Most Expensive Tech Mistakes Happen Before You Build. HOW DO WE HELP YOU AVOID THEM? We validate the product, technology and data decisions that matter before major investment begins. You get an independent assessment, clear priorities and a practical roadmap from senior experts who understand what it takes to deliver Explore Tech Consulting Services From Idea to Production in 3 Stages The right decisions at the right time. 01. Assess Decide what to build, and why. 02. Build Build, integrate, deploy production AI. 03. Run Integrate AI-fluent capability into your organisation. Proven Results for Global Clients Real projects. Real impact. Have a look at some of the work we’ve done for our clients. View All case studies Digitising Global Recruitment with an Assessment Platform Designing and developing an enterprise assessment platform to support the digitalisation of global recruitment processes. View Case Study Engineering Digital Platform for The Sun’s 30+ Million Readers Staff augmentation with The Sun’s in-house team, supporting the continuous development and performance optimisation. View Case Study Scaling a Leading UK Fintech Platform Through Long-Term Product Development An embedded team of engineers, QA specialists, and Product Owners supporting the ongoing development of Smart Pension’s fintech platform. View Case Study Building a Scalable Real-Time Drug Shortage Platform for seven Markets A dedicated team of engineers and product specialists supporting the development of a real-time drug shortage platform. View Case Study From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI & Data URL: https://q.agency/services/ai-data/ Explore AI and data services at Q: from data strategy and engineering to machine learning and AI solutions. AI & Data | Services | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > AI & Data AI & Data: Build AI That Fits the Way Your Business Works We help companies turn data into something they can actually use. From defining AI strategy and building custom agents to automating workflows and integrating data systems, the focus is always on real, measurable impact. AI and Data Service Offerings Explore the services that help you validate opportunities, reduce risk and define the right path forward. Agentic Sprint Turn one high-value AI use case into a working agent prototype, tested on real data and measured against business KPIs before you commit to a full build. In 10 days, you get evidence of what works, what doesn’t, and a clear decision on what comes next. Multi-Agent Orchestration Build specialised AI agents that work across your processes, data, and existing systems. From role-specific agents to orchestrated pipelines, they take on complex work, share context, and complete workflows end to end. Workflow Automation We help enterprises build operational processes that actually scale. Process discovery, integration platform engineering, document automation, citizen-developer governance, and managed operations. One team from strategy to production. AI Ops as a Service Keep production AI reliable, governed, and performing over time. From monitoring and retraining to incident response, compliance, and cost optimisation, we operate the full AI stack and continuously improve it against your business needs. Data and Integration We engineer the AI agents that reach production. On an open, code-first framework layer, the same class of stack Klarna, Uber, LinkedIn and MUFG run. Human in the loop by architecture. Delivered iteratively by a small, dedicated pod. From Idea to Production in 3 Stages The right decisions at the right time. 01. Assess Decide what to build, and why. 02. Build Build, integrate, deploy production AI. 03. Run Integrate AI-fluent capability into your organisation. Why Choose Q? Large Local AI Models All AI development and testing is performed within our infrastructure. Our software development process is enhanced by large local AI models that support specification, code generation, testing, and review — enabling our teams to focus on quality, validation, and delivering exceptional products. AI Academy To continuously strengthen our capabilities, we run an internal AI Academy. Over 100 Q’s experts have already completed the program, specializing in modern AI agent development, with top performers earning AWS AI certifications. Private Infrastructure: Nvidia H200 GPU Cluster We invested in our own AI infrastructure, powered by a dedicated NVIDIA H200 GPU cluster. This allows us to train, fine-tune, and deploy AI models entirely on our own hardware — ensuring speed, independence, and maximum data security. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Looking to turn your data into real business value with AI? Contact us FAQ What are AI and data services, and how can they benefit my business? AI and data services help organisations collect, process, and use data to improve decision-making, automate processes, and uncover insights. This can lead to increased efficiency, reduced costs, and new opportunities for growth through better use of existing data. How do I know if my company is ready for AI and data solutions? You don’t need a perfect setup to start. If you have access to data and clear business challenges — such as manual processes, slow decision-making, or untapped insights — you’re ready to begin. The first step is usually building a reliable data foundation and identifying high-impact use cases. What is the difference between data engineering and AI development? Data engineering focuses on collecting, organising, and preparing data so it can be used reliably. AI development builds on that foundation by creating models and systems that analyze data, make predictions, or automate decisions. Both are essential for delivering practical, production-ready solutions. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Consulting and Tech Strategy URL: https://q.agency/services/consulting-strategy/ Explore consulting and strategy services at Q: from product strategy and discovery to digital transformation. Consulting and Tech Strategy | Services | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Consulting and Tech Strategy Technology Consulting: Clarity Without Risk Technology consulting helps companies define, plan, and scale digital products and systems. It provides a structured approach to assessing, prioritising, and de-risking technology investments before development, ensuring clear direction, better decisions, and a solid foundation for execution. Tech Consulting Services We support critical product and technology decisions, from early validation and assessment to defining clear roadmaps and priorities: New Product Discovery We define and validate new digital products through stakeholder interviews, problem validation, and analysis of business goals, user journeys, and technology. Technology Due Diligence A comprehensive assessment of your technical ecosystem, including infrastructure, architecture, and code quality. AI & Data Readiness & Strategy We help enterprises get strategy, data and processes ready before the model, before the agent, before the automation. Proven Results for Global Clients A closer look at how our Consulting services are applied in practice, and the kind of measurable results it can deliver in real-world projects. Reducing Cost by 32% Through Tech Due Diligence Learn how Q’s technology due diligence service unlocked risks and discovered opportunities for the world’s largest obstacle course race. View Case Study Our Technology Expertise You’ll work with senior experts across a wide range of modern technologies and disciplines. Our capabilities are structured around key areas of software development, product design, and cloud infrastructure — allowing us to support complex digital products end-to-end. Back-End Software PHP nodeJS .NET Java Python AI, ML and Data Python Spark R AWS PyTorch LlamaIndex LangChain LabelStudio Front-End Software React/Next Angular Flutter Vue.js CMS WordPress Shopware Strapi Drupal Contentful Sanity OutSystems Mobile Application Flutter Swift Kotlin Product Design Figma Sketch Adobe Creative Cloud (Photoshop, Illustrator, After Effects) Cursor Visual Studio Code AI-assisted Design Workflows Prototyping & Design Systems Cloud Infrastructure AWS Microsoft Azure Google Cloud Platform Kubernetes OpenShift AWS Lambda Client-hosted & On-Premises Environments Why Choose Q for Tech Consulting? Our philosophy is straightforward: we deliver tailored solutions, focus on lasting partnerships, and cultivate a supportive environment for our team. Take a look below to see our focus areas and how we make it all happen. Delivery Excellence Q consistently outperforms inherited vendors through strong documentation, IP handling, modern practices, and disciplined delivery supported by CoP and CoE frameworks. AI & Innovation Leadership Our AI-first approach accelerates development, reduces cost, and improves accuracy through AI-assisted workflows, testing, and continuous R&D investment . People & Culture Advantage Backed by four Best Employer Awards , low ~7% attrition, and a 2,000+ talent pool across five countries, Q delivers stable, scalable, English-proficient teams. End-to-End Capability Q covers the full SDLC : from discovery to maintenance, ensuring continuity, fast team transitions, clear IP ownership, and seamless multi-vendor collaboration. Commercial Advantage We deliver lower total cost of ownership through faster ramp-up, delivery continuity, flexible engagement models, and experience across 200+ projects for 100+ clients. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Looking to define the right tech direction for your company? Contact us FAQ What does a technology consulting company actually do? Technology consulting helps businesses define, plan, and implement the right technology strategy. This includes evaluating existing systems, identifying opportunities for improvement, and guiding decisions around architecture, tools, and scalability. WHEN DO YOU NEED TECH CONSULTING? You need product strategy and tech consulting services if you’re dealing with an inefficient or costly tech stack, looking to implement AI but lack a clear starting point, building a new product and require validation before investing, acquiring or scaling a company and need tech due diligence, or missing a defined product roadmap and technical direction. How do you measure the success of technology consulting? Success is measured through business outcomes — such as improved performance, faster delivery, reduced costs, or better scalability. Clear KPIs and alignment with business goals are key to ensuring consulting delivers real value. WHAT ARE Q’s DELIVERABLES? We provide technology consulting and product strategy by evaluating your product, architecture, and data landscape, covering user journeys, architecture, code quality, processes, and scalability, combined with rapid validation through prototyping and feasibility testing. You get a clear roadmap, prioritised backlog, and actionable tech strategy to optimise efficiency, reduce costs, and improve delivery. Our senior experts support implementation and ongoing development, enabling faster time-to-market, lower risk, and a scalable foundation, with practical AI opportunities where relevant. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Product Engineering URL: https://q.agency/services/product-engineering/ Learn more about our design and engineering services for UX/UI, product development, system modernisation, and cloud engineering built for digital products at scale today. Product Engineering | Services | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Product Engineering Design Thinking. Engineering Precision. Product engineering combines design thinking and engineering excellence to shape product direction, create intuitive experiences and build scalable, future-ready software – with quality, speed and long-term value at the core. Design and Engineering Services Our design and engineering teams deliver UX/UI design, digital product development, system modernisation, and cloud engineering to help companies build high-performing digital products. UX and UI Design User-centred UX/UI design focused on research, prototyping, usability, accessibility, and scalable design systems that align user needs with business goals across complex environments. Re-Architecting and Modernisation Legacy systems hold companies back. We can help you improve architecture, upgrade technologies, and reduce technical debt, making your systems more efficient and ready for future. Digital Product Development From concept to launch, we build digital products that perform in real-world conditions, combining modern architecture, clean code practices, and product thinking, Cloud Engineering Modern products require resilient infrastructure. Our cloud engineering teams design, build, and optimise cloud environments that support scalable applications, high availability, and secure operations. From Idea to Production in 3 Stages The right decisions at the right time. 01. Assess Decide what to build, and why. 02. Build Build, integrate, deploy production AI. 03. Run Integrate AI-fluent capability into your organisation. Proven Results for Global Clients Our design and engineering work helped deliver measurable impact for one of the world’s most recognised newspaper brands. Engineering a High-Traffic Digital Platform for The Sun’s 30+ Million Readers For The Sun, we combined design and engineering to create a faster, sharper digital experience built for scale and everyday use. Learn more Our Technology Expertise You’ll work with senior experts across software development, product design and cloud infrastructure – supporting complex digital products end to end. Back-End Software PHP nodeJS .NET Java Python AI, ML and Data Python Spark R AWS PyTorch LlamaIndex LangChain LabelStudio Front-End Software React/Next Angular Flutter Vue.js CMS WordPress Shopware Strapi Drupal Contentful Sanity OutSystems Mobile Application Flutter Swift Kotlin Product Design Figma Sketch Adobe Creative Cloud (Photoshop, Illustrator, After Effects) Cursor Visual Studio Code AI-assisted Design Workflows Prototyping & Design Systems Cloud Infrastructure AWS Microsoft Azure Google Cloud Platform Kubernetes OpenShift AWS Lambda Client-hosted & On-Premises Environments Why Choose Q? Because we focus on tailored solutions, long-term partnerships and a supportive team culture, creating better outcomes for our clients and our people. Delivery Excellence Q consistently outperforms inherited vendors through strong documentation, IP handling, modern practices, and disciplined delivery supported by CoP and CoE frameworks. AI & Innovation Leadership Our AI-first approach accelerates development, reduces cost, and improves accuracy through AI-assisted workflows, testing, and continuous R&D investment . People & Culture Advantage Backed by four Best Employer Awards , low ~7% attrition, and a 2,000+ talent pool across five countries, Q delivers stable, scalable, English-proficient teams. End-to-End Capability Q covers the full SDLC : from discovery to maintenance, ensuring continuity, fast team transitions, clear IP ownership, and seamless multi-vendor collaboration. Commercial Advantage We deliver lower total cost of ownership through faster ramp-up, delivery continuity, flexible engagement models, and experience across 200+ projects for 100+ clients. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Ready to build a better digital product? Contact us FAQ What do Q Agency’s design and engineering services include? Design and engineering services combine product strategy, UX/UI design, software development, system modernisation, and cloud engineering to help businesses build and improve digital products. Instead of treating design and engineering as separate disciplines, this approach brings them together to create products that are easier to use, technically stronger, and better aligned with business goals. Why are UX/UI design and engineering both important for digital product development? UX/UI design and engineering work best when they are developed together from the start. Strong design improves usability, clarity, and consistency, while strong engineering ensures the product performs well in real-world conditions. When combined, they help businesses launch digital products faster, reduce friction for users, and create experiences that support long-term product growth. When should a company consider re-architecting and modernising its platform? A company should consider re-architecting and modernising its platform when legacy systems begin to slow delivery, increase maintenance effort, or limit product improvements. Modernisation helps improve architecture, reduce technical debt, upgrade outdated technologies, and make digital products easier to maintain. It is especially valuable for businesses that want better performance, more flexibility, and a stronger foundation for future development. How does OUR cloud engineering support high-performing digital products? Cloud engineering helps businesses build digital products that are more reliable, secure, and ready for changing demand. It covers the design, build, migration, and optimisation of cloud environments so products can support stronger performance and availability. For companies developing or improving digital platforms, cloud engineering creates the infrastructure needed for smoother operations and long-term resilience. Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Agentic Sprint URL: https://q.agency/services/ai-data/agentic-sprint/ Validate your AI agent idea in 10 days with Agentic Sprint: a fixed-scope sprint that turns one use case into a working prototype and roadmap. Agentic Sprint | AI & Data | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > AI & Data > Agentic Sprint Agentic sprInt: Validate your AI initiative in just 10 days 10 Days. 3 Focused Stages. Move forward with confidence with Agentic Sprint. Know exactly where AI creates value in your business. DAYS 1-2 01. Frame We don’t build until the case and the data are real Pick the one use case with real business value Define success metrics the board will recognise Confirm data access and technical feasibility DAYS 3-8 02. Build A prototype you can actually pressure-test. A working agent on your data in your environment Reasoning, tool use and memory, not a demo Guardrails a human-in-the-loop from day one DAYS 9-10 03. Prove You leave with a decision, not a maybe. Measured against the KPIs you set on day one A costed roadmap from prototype to production A clear build, buy or partner decision Most AI Ideas Do Not Need More Hype. They Need Proof. what you get 01 Go/No-Go Decision A clear recommendation based on measurable results, so you know whether to scale the solution or stop before investing further. 03 Working Prototype A functional AI agent built on your workflows, data, and business environment, not a scripted demo or proof of concept. 02 Validated Business Case Proven business value with defined KPIs, real workflow testing, and a clear understanding of the expected ROI and operational impact. 04 Product Roadmap A practical implementation plan covering architecture, integrations, governance, and the next steps required to move from prototype to production. Partner with us Have a project or AN idea to discuss? Contact us why run it with q 01 We run on our own agents Q is putting AI agents into its own delivery: development, QA, analysis and sales. You are partnering with a firm that already works this way, not trialling it on you. 03 Proof in production The sprint sits behind a 300-person delivery org with live work for News UK, Daily Mail, Subsea7 and Teladoc. The prototype has a real place to go next. 02 Your data stays yours Private GPU infrastructure, EU jurisdiction and human review on every output. No client data ever touches public AI tools. 04 Built to continue The sprint is step one of a longer journey. The same team carries it into Build and Run: no re-procurement, no handoff, no knowledge lost. What you walk away with By the end of the agentic sprint, you have: The prototype works with the realities of your systems, workflows, and available data. A validated AI agent use case Defined success metrics A working prototype on real data Identified technical and operational risks Guardrails and human-in-the-loop logic A costed roadmap from prototype to production A clear recommendation on whether to build, buy, or partner Stop Guessing. Validate AI in 10 Days. FIXED SCOPE. FIXED FEE. NO LOCK-IN. Contact Us From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI-Driven Development - Tech Consulting and Software Engineering URL: https://q.agency/services/ai-data/ai-driven-development/ AI-driven development combines AI-augmented engineering with a proven methodology to accelerate delivery, strengthen teams and transfer knowledge. AI-Driven Development | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > AI & Data > AI-Driven Development AI-Driven Development Q teams use AI-augmented tooling natively , on our own infrastructure. This is not “engineers with Copilot”, but a structured methodology built to improve delivery while transferring knowledge back to your team. Engineering, Re-Engineered With real outcomes, measured in production. -30% Development costs Lower total spend over project lifecycle. +51% Feature delivery speed More velocity per engineer in each sprint. 94% Test coverage AI-generated unit & integration tests. 2 days Deployment frequency Down from 2 weeks pre-AI. BUILT FOR CONTROLLED, SCALABLE ADOPTION Q’s approach keeps code within a controlled environment while improving delivery speed, test coverage, and deployment frequency. Validate before you build. 01. Lower Cost Reduce total spend across the project lifecycle. 02. Faster Delivery Increase velocity per engineer and per sprint. 03. Stronger Coverage Use AI-generated unit and integration tests. 04. Team Enablement Transfer the methodology to your internal team. AI Is a Force Multiplier, Not a Replacement AI handles repetitive work. Humans handle judgement, review, and accountability. The same teams deliver more, faster, with better traceability. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Ready to Re-Engineer Your Development Process? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AIOps-as-a-Service URL: https://q.agency/services/ai-data/aiops-as-a-service/ AIOps-as-a-Service that keeps production AI reliable, governed and cost-efficient through continuous monitoring, retraining and optimisation. AIOps-as-a-Service | AI & Data| Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu AIOps-as-a-Service for Production AI From monitoring and retraining to governance and cost optimisation, we operate the AI systems your business depends on. AI doesn’t scale without an operating model. Infrastructure, compliance and operations must be designed together. Otherwise, successful pilots rarely become production systems. what we do We close the gap between your initial automation success and enterprise-scale operations that actually deliver. Advisory We help you pick the right deployment environment, billing model and operating approach for your workload, your cost structure and your regulators. Independent of any vendor. Platform We deploy and operate the full stack: MLOps, LLMOps, classical AIOps, agentic operations. Observability, evaluation, guardrails, gateway and agents, all running alongside your team. Infrastructure Our NVIDIA H200 sovereign infrastructure handles sensitive development, testing and staging. For production, we design, size and implement on the environment you choose. what you get Our Service Pillars 01 Sovereign AI Deployment Build inside our perimeter. Deploy inside yours. 04 Root-Cause AIOps Root cause, not correlation in a chatbot wrapper. 07 Privacy-Preserving AI Train on data you cannot see. Deploy where the regulator allows. 02 Compliance Automation Annex IV, DORA, Article 27, SDAIA, PDPL. Documentation that writes itself, from the pipelines that built the model. 05 LLMOps & Observability If you cannot evaluate it, you should not ship it. 03 Agentic Operations Agents that take action, with the rails a regulated business needs. 06 AI Supply Chain Security Know every model you run. Verify before you trust. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Why Invest in Q AIOps as a Service? 01. One team, full stack. LOps, LLMOps, classical AIOps and agentic operations under one operating model. No fragmented ownership, no disconnected tooling, no handoffs between vendors. 02. Sovereign by design, cloud when it fits. Our NVIDIA H200 capacity gives you a secure place to build when sensitive data cannot touch a public cloud. For production, we build on the environment that fits your rules. 03. Certified by independent audit. ISO 9001, ISO/IEC 27001 and ISO/IEC 27701 certified management systems. A recognised starting point for your procurement and security teams. 04. Regulator-ready documentation. Annex IV, DORA Register of Information, Article 27 FRIA templates, ISO 42001 readiness. We produce the artefacts an auditor will actually ask for. Explore More What’s Next: Human-Agent Pods Technology alone doesn’t deliver AI. The right delivery model does. Explore how Human-Agent Pods combine AI acceleration with experienced engineering teams. Partner with us Have a project or AN idea to discuss? Contact us FAQ What is included in AIOps-as-a-Service services? The service typically includes production monitoring, alerting, model retraining, governance workflows, incident response, performance optimisation, cost reporting, and ongoing operational support tailored to your AI environment. Can AIOps-as-a-Service work for both new and existing products? Yes. It can support newly launched AI solutions from day one or take over the operation and optimisation of AI systems already running in production, regardless of whether they were built by Q or another team. How is AIOps-as-a-Service different from traditional DevOps? While DevOps focuses on application infrastructure and deployment, AIOps-as-a-Service manages the ongoing operation of AI systems—including model performance, data quality, retraining, governance, and AI-specific monitoring—to keep production AI reliable over time. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Data Engineering URL: https://q.agency/services/ai-data/data-engineering/ Data Engineering that transforms messy data into a competitive edge, powering faster AI, smarter automation and scalable digital products. Data Engineering | AI & Data | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > AI & Data > Data Engineering Data engineering: Build the Foundation for What Comes Next Turn fragmented, raw data into reliable data flows that can power AI, automation, analytics, and digital products at scale. What is data engineering? Data engineering turns data architecture into working infrastructure. We build the pipelines, transformation workflows, and storage foundations that move data from source systems to where it creates value — making it reliable, accessible, and ready for AI, analytics, automation, and product use. WHAT WE DO We build the core data infrastructure that keeps information moving, usable, and trusted across your organisation. Data Pipelines We build reliable pipelines that move data between source systems, platforms, and applications, supporting both operational and analytical workloads. Warehouses & Lakehouse Foundations We build scalable warehouse and lakehouse foundations that bring data together and make it accessible for analytics, machine learning, AI, and other downstream applications. ETL & ELT Workflows We design ETL and ELT workflows that ingest, clean, transform, and prepare data for its intended use — from reporting and analytics to AI and automation. Data Quality, Governance & Lineage We build quality checks, governance, and lineage into data flows so teams can understand where data comes from, how it changes, and whether it can be trusted. Explore More AI Ops as a Service AI doesn’t scale without an operating model. Infrastructure, compliance and operations must be designed together. Otherwise, successful pilots rarely become production systems. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Ready to turn fragmented data into reliable data flows? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Data and Integration Service URL: https://q.agency/services/ai-data/data-integration-service/ Data and Integration that connects systems, improves data quality and gives your business a trusted foundation to scale and make smarter decisions. Data and Integration Service | AI & Data | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > AI & Data > Data and Integration Service DATA AND INTEGRATION: Structure and Govern Your Data From architecture and integration to governance and quality, we build data ecosystems that support long-term business growth. AI Is Only as Good as the Data Behind it. The stronger the data foundation, the more reliable the AI built on top of it. WHAT WE DO A complete set of services for structuring, integrating and governing enterprise data. Data Architecture & Modelling Data architecture defines how data is structured, owned, and flows across systems. This phase focuses on clarity and structure, not on tooling. Data Governance & Quality Data governance defines how data is owned, managed, and trusted across the organisation. Without governance, data quality problems scale faster than data usage – and trust erodes quickly. System Integration (API) APIs are not just technical endpoints — they are contracts that encode responsibilities, ownership, and expectations between systems. Master Data Management Master Data Management addresses the problem of inconsistent core data spread across multiple systems. MDM is not primarily a technology initiative — it is a discipline for defining, owning, and governing shared business data. Data Lakes, Warehouses, Pipelines We design data lakes, warehouses and pipelines that organise, transform and deliver data reliably across analytics, AI and business applications. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Explore More AI Ops as a Service AI doesn’t scale without an operating model. Infrastructure, compliance and operations must be designed together. Otherwise, successful pilots rarely become production systems. Partner with us Ready to connect, structure and govern your data? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Multi-Agent Orchestration URL: https://q.agency/services/ai-data/multi-agent-orchestration/ Multi-agent orchestration helps teams automate role-specific, domain-specific, and process-heavy work by connecting systems inside the existing business stack. Multi-Agent Orchestration | AI & Data | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > AI & Data > Multi-Agent Orchestration Multi-Agent Orchestration Built Into Your Business Specialised AI agents working as one coordinated system, embedded in your processes, fine-tuned on your data and engineered to handle complex work end to end in production. Built for a Role They are embedded in the workflow of a specific function. Lifts throughput where the work is high-volume and judgement-heavy. Built for a Domain Multi-agent systems shaped by the rules, data and compliance of one industry. Sit inside the client’s stack. Built for a Process Agents that sit in the gaps between systems and take over the manual handoffs no one owns, connecting to the client’s existing stack. Built Around Your Data, Processes, and Stack. WANT TO KNOW HOW WE DO IT? Contact Us HOW MULTI-AGENT ORCHESTRATION CREATES LEVERAGE 01. Internal Workflow Agents Embedded into BA, PM, QA and other operational workflows to handle repetitive, high-volume work and help teams move faster. 02. Customer-Facing Service Agents Connected to customer, product and service data to resolve requests, maintain context and deliver more consistent support. 03. Decision-support agents Built around your data and business rules to analyse complex inputs, identify risks and support better-informed decisions. 04. Orchestrated multi-agent pipelines We focus on the AI opportunity with the clearest business value, so the sprint starts with direction instead of guesswork. 05. Clear Decision Specialised agents work together across systems and process steps, passing context and completing end-to-end workflows. Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Workflow Automation URL: https://q.agency/services/ai-data/workflow-automation/ Workflow automation that removes bottlenecks, connects systems and turns complex processes into secure, scalable operations. Workflow Automation | AI & Data | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > AI & Data > Workflow Automation WORKFLOW AUTOMATION: From Bottlenecks to Breakthroughs Better process design, smarter integrations and targeted automation turn operational bottlenecks into scalable workflows. Most Automation Projects Never Reach Production The reasons are almost always the same. Platform decided too late. Costs that spiral without clear value. Governance bolted on after the fact. WHAT WE DO We close the gap between your initial automation success and enterprise-scale operations that actually deliver. Advisory We map processes, calculate honest ROI, and select the right platform for your organisation. Independent of any vendor, focused on what actually works. Engineering We deploy integration platforms, build document and workflow automations, and establish citizen-developer governance that scales. Operations We monitor, troubleshoot, and optimise workflows in production. Your team focuses on business value; we handle the technical operation and improvements. What you get Our Service Pillars 01. Assessment & Strategy Know which business processes are worth automating before you build anything. 02. Integration & Orchestration The integration fabric that connects your business systems, deployed and operated properly. 03. Document Intelligence Turn invoices, contracts, emails, and claims into structured, reviewed, actioned data. 04. Automation Governance How an enterprise runs 500 automations authored by 80 business users without descending into chaos. 05. Managed Automation We run the automation platform and the workflows on it, so your operations team focuses on growth. WHY INVEST IN WORKFLOW AUTOMATION WITH Q? One team, full spectrum. Strategy, engineering, and operations under one operating model. Not three vendors handing off at every phase.g. Honest ROI with retrospectives. We count automation hours at 25-35% of face value and commit to measuring actual results against our business case. Platform-agnostic, outcome-focused. We select tools based on your requirements, not vendor relationships. We measure success in business metrics, not deployment metrics. Production-ready from day one. Observability, governance, and error handling built in from the start, not bolted on later when things break. Explore More Sister Service: AIOps AI doesn’t scale without an operating model. Infrastructure, compliance and operations must be designed together. Otherwise, successful pilots rarely become production systems. Partner with us Ready to automate what’s slowing your business down? Contact us From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI and Data Readiness and Strategy URL: https://q.agency/services/consulting-strategy/ai-and-data-strategy/ AI & data readiness and strategy helps you reduce risk, accelerate AI adoption and build the right foundation for scalable, high-impact AI. AI and Data Readiness and Strategy | Tech Consulting | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Consulting and Tech Strategy > AI and Data Readiness and Strategy AI & Data Readiness and Strategy: The foundation your AI needs to stand on. We help enterprises get strategy, data and processes ready before the model, before the agent, before the automation. Most AI programmes fail before they build anything. No portfolio view. Data not built for AI. Readiness assessed too narrowly. Use cases chosen by enthusiasm. Governance retrofitted too late. SO HOW DO WE FIX THAT? our Four-phase model 01. Strategise. Portfolio view, operating model, governance framing, phased roadmap. 02. Audit. Scored readiness across six dimensions. Gap register. Maturity scorecard. 03. Discover. Use-case workshops. 5-10 day prototypes on production-grade tooling. Evaluation metrics, not demo videos. 04. Prioritise & Plan. Prioritised portfolio, business cases with honest ROI, executive-ready recommendation that moves to execution. OUR SIX SERVICE PILLARS AI Strategy and Operating Model A strategy your board signs off on, and an operating model that can execute it. Business Intelligence Modernisation From dashboards to augmented analytics, on a semantic layer you can trust. AI and Data Readiness Assessment A scored, defensible picture of where you are and what it takes to be ready. Data Science Environment Preparation MLOps foundation, evaluation infrastructure, feature store. Ready before the models arrive. Data Engineering and Foundations he lakehouse, pipelines, quality layer and retrieval infrastructure your AI runs on. Governance, Risk and Responsible AI Governance designed in from day one, not retrofitted. The evidence an auditor will actually ask for. AI and data strategY in practice A closer look at how data and technology strategy shapes digital products in practice, and how it connects to successful product design and development. Shaping the Data Strategy Behind AN AI Ecosystem for STRUCTURED DECISION CLARITY Starting with a clear AI and data strategy, the project evolved into full product design and development, resulting in a scalable digital solution for mental wellbeing. View Case Study Why choose q What sets our approach apart, from first assessment to production. Foundation before build. We do the hard preparatory work that most programmes skip, and we know how it connects to what comes next because we build that too. Prototypes, not presentations. Discovery produces working systems with evaluation metrics, not decks. The prototype is built on the same tooling the production system will use. Vendor-neutral by design. We advise on the best approach for the client’s constraints: data stack, cloud posture, regulatory requirements, existing investments. Certified management systems. ISO 9001, ISO/IEC 27001 and ISO/IEC 27701. A recognised starting point for procurement and security teams in regulated industries. Explore More What Comes Next: AI Ops as a Service AI doesn’t scale without an operating model. Infrastructure, compliance and operations must be designed together. Otherwise, successful pilots rarely become production systems. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Ready to find out where you stand with AI and data? Contact us FAQ What is an AI and data strategy? An AI and data strategy defines how a company uses data and artificial intelligence to support business goals. It includes data management, use case prioritization, and a roadmap for implementation. When to use AI and data strategy? When exploring how to apply AI in your business. When data exists but is not being used effectively. When AI initiatives lack clear direction or ROI. When planning to scale data and AI capabilities. When aligning multiple teams around data-driven goals. What changes after AI AND DATA STRATEGY? Teams move from experimentation to structured execution. Priorities become clearer, investments more focused, and initiatives easier to scale. Instead of isolated efforts, AI and data become part of a coordinated strategy aligned with business outcomes. Why is data readiness important for AI? AI systems depend on high-quality, structured data. Without reliable data, models produce inaccurate results and fail to deliver value. How do you prioritiSe AI use cases? Use cases are prioritised based on business impact, feasibility, data availability, and implementation effort — focusing on initiatives that deliver measurable results. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # New Product Discovery URL: https://q.agency/services/consulting-strategy/new-product-discovery/ New product discovery defines what to build before development by validating ideas through user research, prototyping, and business alignment. New Product Discovery | Tech Consulting | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Consulting and Tech Strategy > New Product Discovery New Product Discovery DefineS Scope and ValidateS Product Direction New product discovery helps define what to build before development begins. Through user research, stakeholder input, workshops and rapid prototyping, we validate user needs, technical feasibility and business value early – reducing uncertainty and giving teams a clear direction before committing to delivery. Proven Results for Global Clients Have a closer look at how structured product discovery helps define scope, align stakeholders, and set a clear direction for complex digital products before development begins. MAKING HEALTH INFORMATION ACCESSIBLE DURING A GLOBAL CRISIS Using product and technical discovery to define scope, validate the concept, and prepare a mobile solution for large-scale user participation. Learn more CREATING A DIGITAL EXPERIENCE FOR A LEADING LUXURY DESTINATION Running discovery workshops to define requirements, user journeys, and platform scope for a large-scale digital experience at a premium destination. Learn more What You Get Is Clarity Before You Build. You gain validated ideas, a clear scope, and a roadmap that supports faster, more predictable delivery. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. What we evaluate User Needs & Problem Validation Validates real user problems through interviews and research, ensuring the product addresses actual needs. Concepts & Prototypes Tests ideas through low- and high-fidelity prototypes to validate usability, desirability, and direction early. Business Goals & Product Alignment Ensures the product supports business objectives, target outcomes, and long-term strategy. Technical Feasibility Assesses whether the proposed solution can be built efficiently within existing constraints, systems, and resources. User Journeys & Processes Maps how users interact with the product across key steps and identifies gaps, friction points, and opportunities for improving the overall experience. Scope & Roadmap Definition Defines a clear backlog, priorities, and roadmap to guide development and reduce uncertainty. Partner with us Have a project or AN idea to discuss? Contact us FAQ What is product discovery in software development? Product discovery is the process of understanding user needs, validating ideas, and defining what to build before development starts. It helps teams reduce risk and ensure they are solving the right problem. When to use new product discovery? When starting a new product or digital initiative. When product direction is unclear or based on assumptions. When aligning multiple stakeholders and priorities. When planning a new feature set or platform redesign. When you need to define scope before development begins. Why is product discovery important before development? It prevents teams from building features or products based on assumptions. By validating ideas early, it reduces wasted time, cost, and rework later in the development process. What changes after PRODUCT DISCOVERY? Teams move from assumptions to validated direction. Decisions become clearer, priorities more focused, and development more predictable. Instead of guessing what to build, you move forward with a plan grounded in real user and business needs. What are the outputs of a product discovery phase? Typical outputs include validated concepts, user insights, prototypes, a prioritised backlog, and a clear product roadmap that guides development. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Technology Due Diligence URL: https://q.agency/services/consulting-strategy/technology-due-diligence/ Technology due diligence identifies risks, inefficiencies, and hidden costs across your architecture, codebase, and processes. Technology Due Diligence | Tech Consulting | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Consulting and Tech Strategy > Technology Due Diligence reduce risk and cost with Technology Due Diligence Technology due diligence helps you build on facts, not assumptions . We assess code quality, architecture, security and scalability to uncover hidden risks, technical debt and business misalignment – so you know what to fix before it becomes costly. Customer Success Story Reducing cost by 32% through tech due diligence Learn how Q’s technology due diligence service unlocked risks and discovered opportunities for the world’s largest obstacle course race. View Case Study What You Gain Get a complete picture of your technology, uncover blind spots, and leave with clear priorities for what comes next. Clear View of Risks and Technical Debt Identify hidden issues in architecture, code quality, and security — along with inefficiencies that increase costs and slow down delivery. Faster and More Efficient Delivery Remove bottlenecks in architecture and processes so your team can ship faster with less friction. Actionable Recommendations You Can Execute Get concrete, prioritised steps to fix what matters — not generic reports, but a clear path forward. Better decision-making with full context Make informed technology and product decisions with a clear understanding of risks, trade-offs, and impact. Improved System Reliability and Performance Address weak points that impact stability, scalability, and production issues before they escalate. Scalable foundation aligned with business goals Ensure your technology supports growth, future requirements, and overall product strategy. What We Evaluate Every assessment covers the areas that have the biggest impact on your product’s quality, scalability, security, and delivery. Code Quality & Maintainability Q assess how clean, consistent, and testable your codebase is, including structure, documentation, and test coverage. This helps identify areas that slow down development, increase bugs, or make onboarding new developers difficult. Development Processes Your team’s planning, development, testing, and deployment workflows are analysed to understand how work moves from idea to production. This includes workflows and collaboration practices that impact delivery speed, quality, and consistency. Infrastructure & Tooling Your infrastructure, environments, and tooling setup are evaluated — including CI/CD pipelines, deployment processes, and system configuration. This helps identify bottlenecks, inconsistencies, and gaps that impact reliability, scalability, and overall delivery efficiency. Architecture & Scalability This is where we evaluate how your system is designed and whether it can support growth, new features, and increasing load. This includes identifying bottlenecks, overly complex solutions, and architectural decisions that limit flexibility. Security & Risk Exposure We review potential vulnerabilities, access controls, and compliance risks across your system. The goal is to uncover weak points that could lead to data breaches, downtime, or regulatory issues. Technical Debt & Complexity You get a clear view of where quick fixes, outdated solutions, or unnecessary complexity are making your system harder to maintain and slowing your team down. This highlights what needs to be simplified or reworked. How it works We assess these key areas that directly impact performance, scalability, and long-term maintainability: 01. Assess Analyse your codebase, architecture, and development processes in the context of how your system actually operates. This includes not just technical components, but also workflows, tooling, and how teams collaborate — giving a full picture of what’s working and what isn’t. 02. Identify Highlight risks, inefficiencies, and areas of unnecessary complexity that impact performance, cost, and scalability. This step surfaces both technical issues and structural gaps that slow down delivery or create long-term problems. 03. Recommend Turn findings into a clear, prioritised action plan your team can execute. Instead of a static report, you get a roadmap that improves structure, enables better prioritisation, and supports more confident technical decisions going forward. Blog post It’s Not Just a Report, It’s a Turning Point Want to learn more about Tech Due Diligence? Read our guide to explore the process, best practices, and the value it brings to modern engineering teams. Partner with us Have a project or Ready to assess your technology? Contact us From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. FAQ How long does a technology due diligence process take? Timelines vary depending on system complexity, but most engagements take a few weeks. The goal is to quickly identify risks and provide actionable recommendations without slowing down business decisions. What are the most common issues found during technology due diligence? Typical findings include poor code quality, architectural bottlenecks, lack of scalability, security gaps, and inefficient development processes that slow down delivery. Can technology due diligence help with legacy systems? Yes. It’s especially valuable for legacy platforms, where hidden complexity, outdated architecture, and technical debt often increase costs and slow down delivery. Is technology due diligence only for M&A or investors? No. While common in acquisitions, companies also use it to assess internal systems, plan modernisation, and improve performance before scaling. What happens after the due diligence is completed? You receive a clear, prioritised set of recommendations and next steps, helping your team improve systems, reduce risks, and plan future development. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Cloud Engineering URL: https://q.agency/services/product-engineering/cloud-engineering/ Cloud Engineering improves reliability, scales with your business and keeps costs under control through secure, high-performing cloud environments. Cloud Engineering | Product Engineering | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Product Engineering > Cloud Engineering Cloud Engineering for Reliable and Cost-Efficient Systems Cloud works best when it is built around real product and system needs. We design, migrate and optimise cloud environments across the delivery lifecycle, balancing performance, scalability and reliability with efficient operations, controlled costs and minimal complexity. WHAT WE DO Cloud Strategy and Consulting A clear direction for how cloud should support your systems, including architecture choices, service selection, and a practical roadmap aligned with your current setup and future needs. Cloud Cost Optimisation Analysis and optimisation of infrastructure usage, helping reduce unnecessary costs while maintaining system performance and availability. Cloud-Native Development Applications designed to run efficiently in cloud environments, using architectures and patterns that improve scalability, resilience, and maintainability. Migration and Modernisation A structured approach to moving existing systems to the cloud or improving current setups, minimising disruption while improving performance. Selected infrastructure and cloud-related projects These projects reflect work on system architecture, infrastructure, and performance — areas where cloud engineering plays a key role. OPTIMISING INFRASTRUCTURE FOR A HIGH-TRAFFIC DIGITAL PLATFORM Improving system architecture, performance, and infrastructure to support scalable content delivery and stable operation under high traffic conditions. Learn more IMPROVING SYSTEM ARCHITECTURE FOR REAL-TIME DRUG AVAILABILITY Enhancing backend systems, integrations, and infrastructure to ensure reliable, real-time data flow across multiple markets. Learn more How cloud engineering Works Understand the Current Setup and Goals We start by understanding your existing systems, infrastructure, usage patterns, and constraints, along with the goals for performance, scalability, and cost. Define the Cloud Approach We design a cloud strategy and architecture that fits your system requirements, including service selection, environment structure, and deployment approach. Build or Improve the Environment We implement cloud-native solutions or improve existing infrastructure, focusing on performance, reliability, and maintainability. Migrate and OptimiSe We move workloads where needed and continuously improve configurations, usage patterns, and resource allocation to balance performance and cost. StabiliSe and Manage the Environment We ensure systems run reliably in production, with proper monitoring, scaling, and operational practices in place. WHEN TO INVEST IN cloud engineering Moving to the Cloud for the First Time When existing systems need to be migrated to a more flexible and manageable environment. Improving Performance and Reliability When infrastructure limitations affect system stability, response times, or uptime. Building Cloud-Native Systems When new applications need to be designed specifically for cloud environments to ensure scalability and resilience. Modernising Existing Cloud Infrastructure When current cloud setups are inefficient, hard to manage, or not aligned with system needs. Optimising Cloud Costs When cloud spending grows without clear visibility or control. Supporting Ongoing Product Growth When infrastructure needs to adapt to increasing usage, new features, and evolving system requirements. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Could your cloud perform better and cost less? Contact us FAQ Can you work with existing cloud environments? Yes. We often improve and optimise existing cloud setups, not just build new ones, focusing on performance, reliability, and cost efficiency. How do you approach cloud migration? Migration is planned and executed in stages, minimising disruption and ensuring systems remain stable and operational throughout the process. How do you control cloud costs? We analyse how infrastructure is actually used, identify inefficiencies, and adjust configurations to reduce unnecessary costs — without compromising system performance or reliability. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Digital Product Development URL: https://q.agency/services/product-engineering/digital-product-development/ Digital product development services: Design, build, and scale software products across frontend, backend, mobile, and infrastructure. Digital Product Development | Product Engineering | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Product Engineering > Digital Product Development Digital Product Development for Real-World Use We design, build and evolve digital products end to end, combining product design, architecture, engineering, QA, DevOps and release management. From first concept to production, we turn complex requirements into usable, maintainable and scalable software aligned with real business goals. Selected Product development work Our design work spans consumer products, enterprise tools, operational platforms, and mobile experiences. These projects show the range of products we design and the kinds of teams we work best with. BUILDING A HIGH-TRAFFIC TRAVEL BOOKING PLATFORM FOR A LEADING UK PUBLISHER Building a custom CMS-based product with frontend and backend development, infrastructure setup, and optimisation.. Learn more DELIVERING A REAL-TIME DRUG SHORTAGE PLATFORM FOR GLOBAL PHARMA MARKETS Developing frontend and backend systems with integrations and scalable architecture to ensure accurate, real-time data across multiple markets. Learn more WHAT YOU GET Product Design UX and UI design that helps shape intuitive user journeys, validate concepts early, and create interfaces that are ready for development across web and mobile products. Mobile Development Native or cross-platform mobile experiences designed to work seamlessly across devices while supporting product growth, usability, and consistent performance. Solution Architecture A clear technical foundation that defines how the product is structured, how systems interact, and how the solution can scale securely and reliably over time. DevOps and Infrastructure Cloud infrastructure, CI/CD pipelines, environments, and deployment practices that support fast releases, reliable operations, and long-term product stability. Frontend and Backend Development Robust product engineering across client-side and server-side layers, ensuring performance, maintainability, and smooth delivery of business-critical functionality. Quality Assurance and Release Management Structured testing, quality control, and release processes that reduce risk, support reliable delivery, and ensure the product is ready for production use. How Digital Product Development Works Understand Product and Business Needs We start by understanding the product vision, business goals, user needs, and technical context. This helps define what needs to be built, what constraints matter, and what the product needs to succeed in production. Define Scope, Architecture, and Delivery Approach Q shapes the product structure, align on priorities, and establish the right technical and delivery foundations — from architecture and environments to development workflow and release planning. Design and Build the Product Our teams move from validated concepts into implementation, covering product design, frontend and backend engineering, mobile development, and infrastructure setup as needed. Test, Refine, and Prepare for Release Through QA, testing, and cross-team collaboration, we identify issues early, refine the product, and ensure quality, performance, and readiness before launch. Release and Continuously Improve We support deployment, monitor performance, and continue improving the product through iterations, technical enhancements, and ongoing delivery aligned with business needs. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. WHEN TO INVEST IN DIGITAL PRODUCT DEVELOPMENT Digital product development has the biggest impact when you need more than isolated technical execution — when the goal is to build, modernise, or scale a product with the right combination of product thinking, engineering, and operational readiness. Launching a New Digital Product When a new idea needs to move from concept to production with the right mix of design, architecture, development, testing, and release planning. Scaling Product Complexity When business growth introduces more users, integrations, workflows, and operational demands that require stronger technical foundations. Modernising an Existing Product When legacy systems, technical debt, or outdated architecture limit performance, usability, scalability, or release speed as the product continues to evolve. Improving Delivery Reliability When quality issues, unstable releases, or fragmented ownership slow teams down and create risk around production readiness. Building Across Web and Mobile When a product needs to work consistently across platforms and requires coordinated frontend, backend, mobile, and infrastructure delivery. Need for One Delivery Partner When it is more efficient to work with one team that can cover design, architecture, engineering, QA, DevOps, and release management end to end. Partner with us Looking to build or scale your DIGITAL product? Contact us FAQ What is included in digital product development services? Digital product development at Q includes product design, solution architecture, frontend and backend engineering, mobile development, DevOps, quality assurance, and release management. Can digital product development work for both new and existing products? Yes. It can support the creation of new products from scratch, as well as the redesign, replatforming, or extension of existing digital products and systems. HOW DO YOU APPROACH DIGITAL PRODUCT DEVELOPMENT FROM STRATEGY TO LAUNCH? It reflects the full product development journey covered on the page, from understanding needs and defining the approach to building, testing, releasing, and continuously improving the product. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Re-architecting and Modernisation URL: https://q.agency/services/product-engineering/re-architecting-and-modernisation/ Re-architecting & Modernisation helps you reduce risk, cut maintenance costs and build systems that are easier to scale and evolve. Re-architecting and Modernisation  | Product Engineering | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Product Engineering > Re-architecting and Modernisation Re-architecting & Modernisation for Reliable and Maintainable Systems Legacy systems often work — but make change slow, risky, and expensive. We modernise software through architecture redesign, refactoring, and infrastructure upgrades, creating systems that are easier to maintain, scale, and evolve. What is re-architecting and modernisation Re-architecting and modernisation improve existing systems so they can better support change, reliability, and ongoing delivery — through architecture redesign, infrastructure upgrades, and simplification of complex integrations. Selected re-architecting and moderniSation projects Our design work spans consumer products, enterprise tools, operational platforms, and mobile experiences. These projects show the range of products we design and the kinds of teams we work best with. RE-ARCHITECTING A LEGACY EMPLOYMENT PLATFORM FOR HIGH-VOLUME OPERATIONS Migrating legacy data, improving system structure, and enhancing workflows to create a more reliable and maintainable platform for ongoing product development. Learn more MODERNISING A DATA PLATFORM FOR REAL-TIME DRUG SUPPLY ACROSS multiple MARKETS Upgrading backend and frontend systems, improving architecture, and refining integrations to support reliable, real-time data delivery in a multi-market environment. Learn more What you get Legacy System Assessment A clear view of the system landscape, including architectural weaknesses, technical debt, operational risks, dependencies, and areas creating the most friction for delivery and maintenance. Cloud Migration Migration planning and execution that moves workloads toward more flexible, resilient, and better-managed cloud environments without disrupting critical operations. Modern Architecture Blueprint A practical target-state architecture that defines how systems should be structured, integrated, secured, and evolved — giving teams a clear path from the current setup to a more maintainable future state. Refactoring and API Unification Codebase improvements and interface standardisation that reduce duplication, simplify integrations, and make services easier to maintain and reuse across the wider system. Application Modernisation A structured plan to improve or rebuild parts of the application stack so the system becomes easier to maintain, extend, and adapt to changing business needs without slowing down future development. Infrastructure Modernisation Upgraded environments, deployment pipelines, and operational foundations that improve reliability, security, observability, release readiness, and day-to-day platform stability. How Re-architecting & Modernisation Works 01 Assess the Current System We begin by understanding the existing architecture, application landscape, integrations, infrastructure, and delivery setup. This helps identify technical debt, structural bottlenecks, operational risks, and the constraints affecting future change. 02 Define the Target Architecture Based on the assessment, we design a modernisation approach and target architecture that fits both the current business reality and long-term technical needs. This includes application boundaries, APIs, infrastructure direction, and migration priorities. 03 Prioritise What to Modernise First Not everything needs to change at once. We identify the parts of the system where modernisation will reduce the most risk, improve maintainability, or unlock the greatest operational and product value. 04 Modernise Incrementally We refactor, migrate, consolidate, and improve systems in controlled steps — reducing disruption while steadily moving the architecture toward a more reliable and manageable state. 05 Stabilise, Operate, and Evolve Once the core improvements are in place, we support ongoing stabilisation, infrastructure improvements, and further architectural evolution to ensure the system stays reliable in production and easier to develop over time. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. When to Invest in Re-architecting & Modernisation Modernising a Legacy System When an existing platform remains business-critical, but its architecture, dependencies, or delivery model make it hard to maintain or improve. Simplifying Integrations and APIs When disconnected interfaces, duplicated endpoints, or inconsistent service boundaries make systems harder to evolve and maintain. Reducing Technical Debt When accumulated shortcuts, outdated patterns, and fragmented logic begin to slow delivery, increase risk, or consume too much engineering effort. Improving Operational Reliability When incidents, fragile deployments, performance issues, or poor observability indicate that infrastructure and application foundations need to be upgraded. Preparing for Cloud Migration When moving to modern infrastructure requires architectural cleanup, service redesign, or a better-defined operational foundation. Creating a Stronger Foundation for Future Change When the current system limits new features, expansion, or product evolution and needs a more sustainable architecture to support what comes next. Partner with us Looking to moderniSe a system that no longer supports change efficiently? Contact us FAQ How do you decide whether a system should be modernised or rebuilt? That depends on the condition of the current system, the level of technical debt, business criticality, delivery constraints, and how much value can realistically be preserved. In many cases, targeted modernisation is more effective than a full rebuild. Can modernisation happen without disrupting business operations? Yes. Modernisation is typically done incrementally, with priorities defined around risk, dependencies, and operational continuity, so critical business processes can continue while the system evolves. What is the difference between refactoring and re-architecting? Refactoring improves the internal structure of existing code without fundamentally changing the system design. Re-architecting addresses the broader system structure — including service boundaries, integrations, infrastructure, and how the system is designed to evolve. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # UX & UI Design URL: https://q.agency/services/product-engineering/ux-and-ui-design/ UX and UI design services: Create intuitive, scalable user experiences that improve usability and support real business goals. UX & UI Design | Product Engineering | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Services > Product Engineering > UX & UI Design UX AND UI DESIGN THAT WORKS We design intuitive, scalable UX and UI experiences that connect user needs with business goals. From research and prototyping to structure and production-ready interfaces, we shape complex digital products that are easy to use, visually consistent and built to evolve. Selected UX/UI work Our design work spans consumer products, enterprise tools, operational platforms, and mobile experiences. These projects show the range of products we design and the kinds of teams we work best with. Creating a Scalable Real-Time Drug Shortage Platform for multiple Markets UX/UI design focused on clarity and speed — creating an interface that helps pharmacists quickly find and act on real-time drug shortage data. Learn more Designing and Engineering Digital Platform for The Sun’s 30+ Million Readers Redesigning UX and UI to simplify navigation, improve content discovery, and support scalable delivery across one of the UK’s largest publishers. Learn more DESIGNING interactive 3D MOBILE EXPERIENCE FOR BODY MEASUREMENT Defining UX and UI for a mobile app that simplifies complex measurements, improves usability, and delivers an intuitive and accessible user experience. Learn more CREATING A DIGITAL EXPERIENCE FOR A LEADING LUXURY DESTINATION Creating UX and UI for web and mobile platforms to enable seamless navigation, improve user journeys, and support premium on-site experience. Learn more WHAT YOU GET Our UX and UI design services deliver clear, structured outputs that support product development, reduce uncertainty, and ensure long-term scalability and consistency. User Research Insights A clear understanding of user needs, behaviours, and pain points based on research, interviews, and data analysis—used to guide design decisions and prioritise features. UI Designs and Design Systems Visually consistent, high-quality interfaces supported by scalable design systems, reusable components, and clear guidelines for long-term product growth. User Flows and Architecture Well-defined user journeys, information architecture, and navigation that structure how users interact with your product and move through key actions. Interaction and Usability Improvements Optimised interactions, microinteractions, and usability patterns that reduce friction and improve overall user experience across devices and platforms. Wireframes and Prototypes Low- and high-fidelity wireframes and interactive prototypes that validate ideas early, test usability, and align stakeholders before development begins. Design Documentation and Handoff Detailed design specifications, assets, and documentation prepared for development teams, ensuring smooth implementation and reducing misalignment. How UX and UI Design Works Understand Users and Business Context We start by understanding user behaviour, business goals, and existing product challenges. Instead of relying on assumptions, we use research, data, and stakeholder input to define what actually needs to be solved. Structure the Product Experience We define user flows, information architecture, and key interactions. This creates a clear product structure and ensures users can move through the product intuitively and without friction. Design and Validate Concepts Through wireframes and interactive prototypes, we test ideas early, align stakeholders, and validate usability before development begins. Design the Interface and System We create UI designs that are not only visually consistent but also scalable. Design systems, components, and patterns are built to support long-term product growth. Collaborate and Iterate with Development Design is closely aligned with development to ensure feasibility, speed, and consistency. We iterate based on feedback, usage data, and evolving product needs. From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. WHEN TO INVEST IN UX AND UI DESIGN UX and UI design has the biggest impact when it’s used to solve real product challenges, not just to improve visuals. Launching a New Digital Product Early design helps define structure, validate ideas, and reduce risk before development starts. Scaling a Product Across Platforms When consistency across web, mobile, and other touchpoints becomes critical. Redesigning an Existing Product When usability issues, poor engagement, or outdated design limit product performance. Aligning Teams Around One Product Vision When product, design, and engineering teams need a shared direction and clear documentation. Improving Conversion or Engagement When users drop off, struggle to complete actions, or don’t interact with key features. Validating Ideas Before Development When concepts need to be tested and refined through wireframes and prototypes before committing to development, reducing risk and avoiding costly rework. Partner with us Ready to design a better user experience? Contact us FAQ How do you ensure design decisions align with development constraints? Design and engineering teams collaborate from the start, ensuring all solutions are technically feasible and ready for implementation. This reduces rework and speeds up delivery. Can UX and UI design work independently of development? Yes, design can be delivered as a standalone phase (e.g. discovery, prototyping), but the best results come when design is closely aligned with development and product decisions. How do you approach redesigning complex or legacy systems? We start by analysing existing workflows, identifying usability issues, and prioritising improvements. Redesign is done incrementally to minimise disruption while improving usability and performance. How do you balance business goals with user needs in design? We align both through research, prioritisation, and validation. Design decisions are based on real user behaviour while supporting key business outcomes such as conversion, retention, and efficiency. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How We Work - Tech Consulting and Software Engineering URL: https://q.agency/how-we-work/ How we work: Three stages of engagement can turn your AI ambition into impact through strategy, production-grade engineering and continuous operations. How We Work | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu How We Work: Three Stages of Engagement AI Success Doesn’t Happen by Chance It requires the right strategy, production-grade engineering and continuous operations. HERE’S HOW WE DO IT. 01. Assess Decide what to build, and why. 02. Build Build, integrate, deploy production AI. 03. Run Integrate AI-fluent capability into your organisation. 01. ASSESS Most AI projects fail before a line of code is written. HOW do WE PREVENT THAT? AI projects rarely fail because of the technology. They fail because teams prioritise the wrong use cases, underestimate data readiness, delay governance and compliance, and never establish a clear operating model. This is where our approach makes the difference. Explore services in our Assess stage: Agentic Sprint Tech Due Diligence Product Discovery AI & Data Readiness & Strategy 02. Build Production-grade AI. Not lab experiments. So how does it work? We build, integrate and deploy AI solutions that fit your existing technology landscape, data and business processes. Every solution is engineered for security, scalability and long-term adoption, not just a successful demo. Explore services in our Build stage: Re-Architecting & Modernisation Multi-Agent Orchestration Workflow Automation Data Engineering UX/UI Design Product Development Cloud engineering 03. RUN Embedded capability becomes part of how you build, not a one-off project. What does that mean? AI delivers value only when it is continuously operated, monitored and improved. We help you run AI as an embedded capability through managed operations, human-agent delivery teams and AI-native engineering practices. Explore services in our Run stage: AI-Ops as a Service AI-Driven Development Human-Agent Pods Team as a service Staff Augmentation Partner with us Ready to move beyond AI experiments? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Assess - Tech Consulting and Software Engineering URL: https://q.agency/how-we-work/assess/ Assess phase turns AI, product and technology ideas into clear decisions by validating value, feasibility, risk, data and technical readiness. Assess | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > How We Work > Assess ASSESS phase: Validate before you commit The Assess phase turns early ideas, AI opportunities, product directions and technology questions into clear business decisions. We evaluate value, feasibility, risk, data readiness and technical foundations, so teams know what to build, what to fix and what to prioritise before moving further. Agentic Sprint Validate your AI idea in just 10 days. 01. Frame DAYS 1–2 Pick the one use case with real business value Define success metrics the board will recognise Confirm data access and technical feasibility We don’t build until case and the data are real. 02. Build DAYS 3–8 A working agent on your data in your environment Reasoning, tool use and memory, not a demo Guardrails a human-in-the-loop from day one A prototype you can actually pressure-test. 03. Prove DAYS 9–10 Measured against the KPIs you set on day one A costed roadmap from prototype to production A clear, evidence-based build, buy or partner decision You leave with a decision, not a maybe. AI & Data Readiness Once the opportunity is validated, the next question is whether your organisation is ready to support it. Data Readiness Is your company’s data available, accessible, and well governed? We determine whether your priority AI use cases have the foundations they need. Team Skills and AI Literacy Technical capabilities, AI literacy, roles and ownership are mapped to reveal the skills and organisational gaps that could slow delivery. Tooling and Infrastructure Your platforms, architecture, integrations, security and infrastructure are assessed to establish what can support AI delivery today. Processes and Automation Workflows, handoffs and existing automation are reviewed to expose inefficiencies, implementation barriers and the strongest opportunities. AI & Data Strategy Readiness shows where you are today. Strategy defines where to go next. How It Works 01. Use Case Prioritisation Potential AI use cases are structured and prioritised so leadership can focus on the opportunities with the clearest business value. 02. Business Case and ROI Each priority use case is supported by a clear business case and ROI rationale before significant time and budget are committed. 03. Target Architecture and Data Foundation The target architecture and data foundation are defined around the selected use cases, giving the strategy a practical technical direction. 04. Build, Buy or Partner The right delivery model is determined for each part of the strategy—what to build internally, what to buy and where an external partner adds the most value. The result: a prioritised AI strategy, target architecture and delivery roadmap ready for leadership sign-off. Explore AI & Data strategy New Product Discovery With a clear strategy in place, it’s time to shape the solutions that will create measurable value. How Discovery Works 01. Problem and Business Goals Potential AI use cases are structured and prioritised so leadership can focus on the opportunities with the clearest business value. 02. User Needs and Assumptions The product opportunity is defined around the problem it needs to solve, the business goals it supports and the outcomes that will determine whether it is worth pursuing. 03. Feasibility and Prototyping Technical feasibility is examined and key ideas are explored through rapid prototyping, reducing uncertainty before significant development effort begins. 04. Scope and Product Direction The validated findings are translated into a focused product scope and a clear direction for moving into design and development with greater confidence. The result: validated ideas, a clearly defined scope and a product roadmap that supports faster, more predictable delivery. Explore Product Discovery Tech Due Diligence Before committing to delivery or investment, uncover the technical risks that could impact business outcomes. WHAT WE EVALUATE Every assessment covers the areas that have the biggest impact on your product’s quality, scalability, security, and delivery. Code Quality & Maintainability Q assess how clean, consistent, and testable your codebase is, including structure, documentation, and test coverage. This helps identify areas that slow down development, increase bugs, or make onboarding new developers difficult. Development Processes Your team’s planning, development, testing, and deployment workflows are analysed to understand how work moves from idea to production. This includes workflows and collaboration practices that impact delivery speed, quality, and consistency. Infrastructure & Tooling Your infrastructure, environments, and tooling setup are evaluated — including CI/CD pipelines, deployment processes, and system configuration. This helps identify bottlenecks, inconsistencies, and gaps that impact reliability, scalability, and overall delivery efficiency. Architecture & Scalability This is where we evaluate how your system is designed and whether it can support growth, new features, and increasing load. This includes identifying bottlenecks, overly complex solutions, and architectural decisions that limit flexibility. Security & Risk Exposure We review potential vulnerabilities, access controls, and compliance risks across your system. The goal is to uncover weak points that could lead to data breaches, downtime, or regulatory issues. Technical Debt & Complexity You get a clear view of where quick fixes, outdated solutions, or unnecessary complexity are making your system harder to maintain and slowing your team down. This highlights what needs to be simplified or reworked. The result: a prioritised action plan that turns technical findings into clear recommendations for reducing risk, improving maintainability and supporting more confident decisions. Explore Tech Due Diligence Partner with us Let’s assess the path forward together. Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Build - Tech Consulting and Software Engineering URL: https://q.agency/how-we-work/build/ Turn ideas into production-ready digital products with scalable engineering, robust architecture and seamless delivery built for long-term growth. Build | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > How We Work > Build Build phase: Turn ideas into production-ready systems From validated ideas to production-ready systems, Build phase is where we design, engineer, automate, and modernise the technology that moves your business forward. Multi-Agent Orchestration Integrated into your workflows. Not bolted onto them. Built for a Role They are embedded in the workflow of a specific function. Lifts throughput where the work is high-volume and judgement-heavy. Built for a Domain Multi-agent systems shaped by the rules, data and compliance of one industry. Sit inside the client’s stack. Built for a Process Agents that sit in the gaps between systems and take over the manual handoffs no one owns, connecting to the client’s existing stack. Multi-agent system specialised in working together inside your processes, fine-tuned on your data and deployed to production. Explore Multi-Agent Orchestration Workflow Automation Automate repetitive, slow, or error-prone work . Reduce Effort. Increase Impact. Less manual work by automating repetitive tasks. Fewer handoffs through connected systems and workflows. Consistent execution with standardised, repeatable processes. Applied across reporting, document processing, communications, cross-system workflows and administrative operations. Data Engineering Strong data foundations are what make AI, automation, and modern digital products usable in practice. • Data pipeline development • ETL and ELT workflows • Data warehouse or lakehouse foundations • Data quality, governance, and lineage • Integrations and analytics enablement Explore Data Engineering Product Development END-TO-END Great products are not just launched. They are built to evolve. How do we get from IDEA TO RELEASE? We develop digital products across the full delivery lifecycle , connecting product design and architecture with frontend, backend, mobile, infrastructure, testing, and release. The result is a product that works for users today and remains scalable, maintainable, and ready for what comes next. Explore Product Development Partner with us Have a project or AN idea to discuss? Contact us Re-Architecting & Modernisation Modernise what matters, without disrupting what works. 01. Assess UNDERSTAND THE CURRENT SYSTEM Map the existing architecture, applications, integrations and infrastructure Identify technical debt, structural bottlenecks and operational risks Understand the constraints affecting reliability, delivery and future change 02. Design and Prioritise DEFINE THE TARGET STATE Design a target architecture around business and technical needs Define application boundaries, APIs and infrastructure direction Prioritise improvements by risk reduction, maintainability and business value 03. Modernise and Evolve MOVE FORWARD IN CONTROLLED STEPS Refactor, migrate and consolidate systems in manageable phases Stabilise the improved architecture and infrastructure in production Continue evolving reliability, maintainability and delivery performance The result is a platform that’s easier to evolve, more reliable in production and ready to support future business needs. Explore Re-Architecting and Modernisation Cloud Engineering Infrastructure built around the product, not the other way around. 01 Reliable by design We build cloud environments for stable operation, with resilient architecture, secure foundations and the visibility teams need to manage systems confidently in production. 02 Scalable when needed Infrastructure is designed to grow with the product, supporting changing workloads, new capabilities and increasing demand without introducing unnecessary complexity. 03 Cost-aware over time We continuously improve infrastructure, resource use and cloud operations to keep performance strong and spending under control as the system evolves. Build a cloud foundation that’s secure, scalable and designed to support continuous product growth. Explore Cloud Engineering UX/UI Design From user insight to production-ready design. 01. Understand the user Research, interviews and behavioural data reveal user needs, friction points and the insights that shape product decisions. 02. Test ideas early Wireframes and prototypes validate ideas early, reduce uncertainty and align teams before development begins. 03. Design for scale Design systems, reusable components and documentation ensure consistency and support efficient implementation. From research to handoff, we design products that are easier to build, easier to use and easier to evolve. Explore UX/UI Design Partner with us Ready to move TO A working system? Let’s build it properly. Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Explore - Tech Consulting and Software Engineering URL: https://q.agency/how-we-work/explore/ Explore phase: uncover the right opportunities through research, validation and strategic insight to define user needs, market potential and product direction. Explore | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > How We Work > Explore Explore phase: Find the opportunities worth pursuing The Explore phase helps teams move from a broad idea, business challenge or AI opportunity to a clearer direction. Through focused workshops, proof-of-concept thinking and value mapping, we define what is worth pursuing, what should be avoided and which next phase makes the most sense. Proof of Concept WHAT A POC SHOULD PROVE Evidence before investment. A focused proof of concept tests the assumptions that matter most: whether the idea solves a real problem, whether the technology can support it and whether the potential value justifies the next stage. Workshops Focused sessions turn uncertainty into direction. Across two or three collaborative workshops, stakeholders align on the challenge, explore opportunities and agree where technology can create measurable value. Shared Direction Bring decision-makers and delivery teams together around the same goals, constraints and definition of success. Stakeholders • Goals • Success Clear Challenge Unpack the business problem, user needs and current workflows before deciding what the solution should be. Users • Processes • Friction Prioritised Opportunity Compare the strongest ideas by value, feasibility and effort, then agree which one deserves further validation. Value • Feasibility • Next step hOW TO CREATE VALUE Focus on what matters, validate the potential and decide what moves forward. From possibility to priority. 01. Start with the outcome Define the business or user result first. Technology follows only when it offers a credible way to improve that outcome. 02. Test the value Assess the potential impact against feasibility, risk and effort to understand whether the opportunity is strong enough to pursue. 03. Make the call Prioritise the opportunities with the clearest path to measurable value and set aside those that do not justify further investment. WHAT COMES NEXT Explore ends with a clear recommendation on the right next step. Depending on the opportunity, maturity and business need, the next move may be Assess, Build or Run, or a decision not to proceed. 01. Assess Decide what to build, and why. 02. Build Build, integrate, deploy production AI. 03. Run Integrate AI-fluent capability into your organisation. Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Run - Tech Consulting and Software Engineering URL: https://q.agency/how-we-work/run/ Run with AI through managed operations, AI-driven development and flexible teams that keep systems reliable and delivery moving. Run | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > How We Work > Run Run phase: Keep improving long after deployment Run is where digital products, AI systems, and delivery teams move from launch to continuous value . Q helps you operate, improve, and scale what has been built — from AI in production to human-agent delivery models and experienced specialists who extend your team. AI-Ops as a Service AI doesn’t stop evolving after launch. Neither should the way you operate it. AI Ops as a Service Continuous operations. Not one-time deployment. We operate the day-to-day lifecycle of production AI on your infrastructure. From monitoring and retraining to governance, incident response, and continuous optimisation, we make sure your AI keeps delivering measurable business value. Human-Agent Pods Built for teams that need speed and accountability. Mirrored Pods One specialist works alongside one dedicated agent, enabling parallel execution, dual control and audit-grade traceability. This model is best suited to complex or regulated environments where oversight cannot be compromised . Compressed Pods One senior generalist coordinates two or three agents to reduce handovers, lower blended cost and maintain a complete view of delivery. It works best for predictable work such as MVPs, internal tools and repeatable product tasks . Human-Gated By design . Every agent operates under human approval, with senior judgement, delivery context and accountability built into the workflow. Faster execution never means handing control to the model. Combine the speed of AI agents with senior human expertise, with our specialists in control of every critical decision. Explore Human-Agent Pods AI-Driven Development Increase engineering velocity without sacrificing quality or governance. -30% Development costs Lower total spend over project lifecycle. +51% Feature delivery speed More velocity per engineer in each sprint. 94% Test coverage AI-generated unit & integration tests. 2 days Deployment frequency Down from 2 weeks pre-AI. AI-driven development goes beyond AI tooling. Q helps teams deliver faster, reduce costs and scale AI adoption. Explore AI-Driven Development Recommended Cooperation Models We adapt how we work to fit each company’s needs, offering flexible cooperation models based on your goals, project complexity, timelines, and budget. Team as a Service Instead of hiring individual developers, with TaaS you get a full team that develops and manages your digital product . You focus on the core business and stakeholders, while we take care of the tech and everyday delivery needs across every project phase. Staff Augmentation Staff augmentation extends your in-house team with experienced engineers without the delays and long-term commitments of permanent hiring. Q specialists join your existing workflows, adapt to your priorities and remain managed by your leads . Partner with us READY TO TURN COMPLEX WORK INTO A COORDINATED SYSTEM? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Cooperation Models URL: https://q.agency/cooperation-models/ Flexible cooperation models tailored to your goals. Choose between Team as a Service, Fixed Price, Staff Augmentation, or Human-Agent Pods. Cooperation Models | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Cooperation models COOPERATION MODELS: FIND YOUR BEST FIT Different projects call for different ways of working. Choose the model that fits your team and business best. Contact Us One Goal. Four Ways to Get There. Explore the options and see what works for you. Team as a Service Get a dedicated product team that takes full ownership of building, maintaining, and scaling your product. Fixed Price and Scope Work within a defined budget, timeline, and set of deliverables when your project requirements are clear from the start. Staff Augmentation Extend your in-house team with senior engineers, increase delivery capacity, and stay in full control. Human-Agent Pods Combine the speed of AI agents with senior human expertise, with our specialists in control of every critical decision. Team as a Service IDEAL FOR LONG TERM COLLABORATION A Dedicated Team Built Around Your Product. When Is This Model the Best Fit? Perfect for scale-ups, enterprise companies, and private equity or venture capital portfolios looking for a long-term technology partner , when you need a cross-functional team that owns delivery end-to-end, from product direction to execution, without managing individual resources. Explore TaaS Model FIXED SCOPE AND PRICE GROUNDED IN CLARITY Clear Planning. Predictable Delivery and Outcomes. When Is This Model the Best Fit? This model works best for mid-size to enterprise companies with clearly defined requirements, deliverables, timelines, and budgets that need a reliable partner to execute against an agreed plan . Explore Fixed Price Model STAFF AUGMENTATION Extra Capacity, Full Control The Expertise You Need, Embedded in Your Team. When Is This Model the Best Fit? Ideal for mid-size and enterprise companies looking to extend their existing teams with specific expertise or additional capacity, while keeping their established processes and full control over priorities and delivery. Explore Staff Aug Model HUMAN-AGENT PODS AI Speed. Human Control Senior Experts, Multiplied by AI Agents. When Is This Model the Best Fit? Ideal for companies with ambitious product roadmaps that need to increase delivery capacity and move faster, without proportionally growing their engineering teams. Explore Human-Agent Pods Model Why Clients Keep Choosing Q 1/3 “Q team are technical gladiators. Smart, relentless and precise. They move fast, think 10 steps ahead, and they care as much about the mission as we do. “ Joe de Sena Founder and CEO of Spartan “The Q team members often refer to HARVN as ‘our product’ and truly enjoyed developing it from scratch. It isn’t just a provider relationship; they feel like part of the HARVN team.” Jean-Claude Maillard Chief Executive Officer “Q is a very important innovation and disruptive partner for us. We are very, very happy.” Tomas Chamorro-Premuzic Chief Informational Officer, Manpower Our Technology Expertise You’ll work with senior experts across a wide range of modern technologies and disciplines. Our capabilities are structured around key areas of software development, product design, and cloud infrastructure — allowing us to support complex digital products end-to-end. Back-End Software PHP nodeJS .NET Java Python AI, ML and Data Python Spark R AWS PyTorch LlamaIndex LangChain LabelStudio Front-End Software React/Next Angular Flutter Vue.js CMS WordPress Shopware Strapi Drupal Contentful Sanity OutSystems Mobile Application Flutter Swift Kotlin Product Design Figma Sketch Adobe Creative Cloud (Photoshop, Illustrator, After Effects) Cursor Visual Studio Code AI-assisted Design Workflows Prototyping & Design Systems Cloud Infrastructure AWS Microsoft Azure Google Cloud Platform Kubernetes OpenShift AWS Lambda Client-hosted & On-Premises Environments From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Discovery & IT consulting - Delete and Redirect - Tech Consulting and Software Engineering URL: https://q.agency/cooperation-models/discovery-it-consulting/ Dedicated Agile Development Teams Full product team is dedicated exclusively on your project, delivering the scope end-to-end. The Benefits of Hiring Our Dedicated Agile Team Autonomous, Cross-Functional Team for Streamlined Development Our experienced dedicated teams take full ownership ofprojects – from concept to delivery. Their skillset and experience accelerates decision-making, fosters accountability and leads to […] Discovery & IT consulting - Delete and Redirect | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Cooperation models > Discovery & IT consulting – Delete and Redirect Dedicated Agile Development Teams Full product team is dedicated exclusively on your project, delivering the scope end-to-end. Schedule a consultation call See the benefits The Benefits of Hiring Our Dedicated Agile Team Autonomous, Cross- Functional Team for Streamlined Development Our experienced dedicated teams take full ownership of projects – from concept to delivery. Their skillset and experience accelerates decision-making, fosters accountability and leads to faster delivery and high-quality outcomes. Evaluation* Depending on the role, the second step in our hiring process may involve a take-home assignment tailored to the specific technology you are proficient in. Q Tech Call This is a second call, where you’ll dive deeper into your technical expertise and specific experience with the Engineering Lead or a Senior Engineer. Client evaluation* In close collaboration with our clients, we ensure they are actively involved in the hiring process. This phase typically involves one or two steps, conducted directly with the clients themselves. Feedback At Q Agency, feedback is an integral part of our culture. You can expect comprehensive feedback at every stage of the process. Whatever the outcome, we’ll keep you in the loop and explain our decisions. *Depending on selection process, you may either be assigned a task or proceed directly to the client evaluation call. How Do You Build Your Dedicated Team? Autonomous, Cross- Functional Team for Streamlined Development Our experienced dedicated teams take full ownership of projects – from concept to delivery. Their skillset and experience accelerates decision-making, fosters accountability and leads to faster delivery and high-quality outcomes. Evaluation* Depending on the role, the second step in our hiring process may involve a take-home assignment tailored to the specific technology you are proficient in. Q Tech Call This is a second call, where you’ll dive deeper into your technical expertise and specific experience with the Engineering Lead or a Senior Engineer. Client evaluation* In close collaboration with our clients, we ensure they are actively involved in the hiring process. This phase typically involves one or two steps, conducted directly with the clients themselves. Feedback At Q Agency, feedback is an integral part of our culture. You can expect comprehensive feedback at every stage of the process. Whatever the outcome, we’ll keep you in the loop and explain our decisions. *Depending on selection process, you may either be assigned a task or proceed directly to the client evaluation call. Are Our Dedicated Agile Team Services the Right Fit For Your Project? Choosing a dedicated agile team can provide significant advantages for your business, especially if you are looking for it One-stop-shop partner: You seek a reliable partner who will guide you through the entire engagement. Focus on core business: You want to concentrate on your core business while we handle all your digital needs. Faster time-to-market: You aim for quick market entry and results driven by outcomes. Agility and flexibility: You value agile and lean practices that accommodate changing priorities during the project. External expertise: You prefer working with an external team over recruiting in-house. Hiring challenges: You face a long hiring process or struggle with recruitment, typically taking 3-6 months. You are looking for cost-effective solutions without compromising quality. Our Dedicated Agile Teams service is perfect for digital products with the following characteristics B2C & B2B products: Ideal for SaaS, enterprise software, e-commerce, and large platforms that require continuous iteration and updates. Long-term projects: Best suited for projects with a duration of 6 months or more, allowing for sustained development and improvement. Why Choose Q as Your Dedicated Agile Team? You will get the highest quality service at a more competitive price. Croatia is a top destination for IT and tech services. Value for Money Superior quality and expertise at competitive rates. Flexibility We offer multiple cooperation models tailored to your specific needs. Award-Winning Employer Q has received prestigious regional awards for Best Employers for three consecutive years. Client Loyalty We build long-term relationships with our clients, some spanning 7 years or more. Scalability Our strong employer branding allows rapid scaling if needed. Extensive Talent Pool Over 300+ skilled professionals. Senior Staff: Highly experienced team members. Proven Quality Recognised as one of the world’s top 15 software agencies and ISO certified, we guarantee exceptional security and privacy. Comprehensive Support Full-service agency with a strong organisational structure. Partner with us Ready to hire a dedicated agile development team? Contact us Recognitions & Awards Financial times 4 Times Best Employer Award Top B2B Companies Global 2021 – 2024 RedDot Tech Fast 500 EMEA EY Entrepreneur of the year European Business Awards German Innovation Awards Our Tech Stack You will have access to senior experts covering the following technologies. Back-End Software Development PHP nodeJS .NET Java Python Data / AI development Python Spark R AWS PyTorch LlamaIndex LangChain LabelStudio Front-end software development React/Next Angular Flutter Vue CMS development WordPress Shopware Strapi Drupal Contentful Sanity Mobile application development Flutter Swift Kotlin Product design UX/UI design Digital product innovation Digital product management Cloud Engineering Infrastructure as a Code CI/CD and Configuration Automation Cloud agnostic Scalability & Optimization Security Hardening Observability & Logging We Use Industry Standard Tools Slack For ongoing daily communication Jira / Teamwork For ongoing daily communication GitLab / GitHub For ongoing daily communication Figma For ongoing daily communication Google meet For ongoing daily communication Head of Engineering and delivery Zvonimir Meet Zvonimir, our Mobile wizard and Head of Engineering & Delivery. By working closely with the entire team, managing performance and facilitating communication, Zvonimir supports project success and contributes to the ongoing growth and development of the organisation. LinkedIn Email Quality in Numbers *Results show average scores from monthly surveys conducted in Q2 2024 on all our clients. 9.3/10 Average satisfaction 9.4/10 Passion & commitment 40% Rated us 10.0 in all categories 3.49 Bugs per 1000 lines of code Number 1 Employer Three Years in a Row #1 2020, 2021 & 2022 Best Employer in Croatia 300+ Experts in our development teams 6 The average Agile team size 52% Employees are senior experts FAQ What is a dedicated software development team? A dedicated software development team is a team of selected programmers who will be working exclusively on your software solution. They are an outsourced team, either nearshore or offshore. How is a dedicated team managed? A team of dedicated software developers can be managed either by your company or by the project manager from the company that you hired the team from. What are the most trusted countries where expert, dedicated development teams can be hired? Eastern European countries are among the top destinations for hiring dedicated software teams. You can see that If you look at platforms like Clutch. We are based in Croatia, the youngest member of the EU, in the Central European time zone (Berlin, Paris). Your dedicated developers speak fluent English, are seasoned IT professionals who can be hired at the same rate as a junior-mid developer in London, New York or Zurich. What types of projects are best suited for a dedicated agile team? This model is ideal for B2C & B2B products requiring continuous updates, such as SaaS, enterprise software, e-commerce, and large platforms, particularly for projects lasting 6+ months. What kind of support can I expect after project completion? We offer ongoing support, updates, and maintenance to ensure your software solution operates effectively, without interruption. Additionally, we provide expert consultations and advice to keep you up-to-date with the latest technology trends. Our goal is to build long-term partnerships with our clients, where we go beyond just development. We actively work with you to align our solutions with your evolving business needs, helping you achieve sustained growth and success. Get in Touch with Our Experts Have questions or ready to take your project to the next level? Contact us for a free consultation, and let’s explore how we can help you achieve your goals, together. Request project development (#9) First name Last name Business email Country Select your country here Afghanistan Aland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bonaire, Saint Eustatius and Saba Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cabo Verde Cambodia Cameroon Canada Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Cook Islands Costa Rica Croatia Cuba Curaçao Cyprus Czech Republic Democratic Republic of the Congo (Kinshasa) Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Eswatini Ethiopia Falkland Islands Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and McDonald Islands Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Isle of Man Israel Italy Ivory Coast Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo Kuwait Kyrgyzstan Laos Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao S.A.R., China Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island North Korea North Macedonia Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Republic of the Congo (Brazzaville) Romania Russia Rwanda Réunion Saint Barthélemy Saint Helena Saint Kitts and Nevis Saint Lucia Saint Martin (Dutch part) Saint Martin (French part) Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia/Sandwich Islands South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkmenistan Turks and Caicos Islands Tuvalu Türkiye Uganda Ukraine United Arab Emirates United Kingdom (UK) United States (US) United States (US) Minor Outlying Islands United States (US) Virgin Islands Uruguay Uzbekistan Vanuatu Vatican Venezuela Vietnam Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe Company Business title (optional) What budget do you plan to allocate? Select budget range here $50,000 and under $50,000-$200,000 $200,000-$1,000,000 $1,000,000+ What are you interested in? Strategy UX & UI Design Development Product Scaling Team Scaling Strategic Support Product Innovation Other Tell us more about your project (optional) This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply. Send Your Message From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field. Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. If you’re nearby, feel free to visit us at our headquarters Zagreb HQ Reljkovićeva 4, 10000 Zagreb, Croatia Open google maps London Borough Yards, 13 Dirty Lane, London, SE1 9PA Open google maps Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Fixed Scope and Price URL: https://q.agency/cooperation-models/fixed-scope-fixed-price-project/ Fixed scope & price model: Define requirements upfront, control budget and timeline, and deliver your project with predictable outcomes. Fixed Scope and Price | Coperation Models | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Cooperation models > Fixed Scope and Price Fixed Scope AND Price for predictable Projects Build your product with clearly defined scope, timeline, and budget. Contact Us What is a fixed price and scope project A fixed scope project is a software development model where requirements, deliverables, timeline, and budget are agreed upfront before development begins. It works best when the scope is clear, priorities are unlikely to change, and you need a predictable path to delivery with minimal deviation during execution. When To Choose This Model A fixed scope project is the right choice when you need predictability across budget, timeline, and deliverables — and when the project can be clearly defined before development starts. Your Requirements Are Stable You already know what needs to be built, and the scope is unlikely to change significantly during delivery. You Prefer a Waterfall Approach You want a structured project with clearly defined phases, milestones, and limited changes once execution begins. You Need To Move Faster When timelines are tight and internal capacity isn’t enough to hit key milestones. Predictability Matters More Than Flexibility You want all major project decisions made upfront to reduce uncertainty during development. Longer Time-to-Market Is Acceptable You are willing to invest more time in planning and validation to gain greater clarity and control before launch. Security and Change Control Are Critical Iterative changes are limited, and governance, compliance, or approval processes require tighter control. Proven Results from Fixed Scope Projects Discover how organisations turned clearly defined requirements into successful digital products, delivered on time, within budget, and with confidence from day one. Digital transformation of the leading global supplier in the energy industry How a clearly defined scope and structured delivery enabled Subsea7 to launch a reliable digital solution on time and within budget. Learn more Building the website and mobile app for the world’s premier luxury destination A clearly defined scope and structured delivery enabled Sela to launch a web and mobile experience for Via Riyadh under tight deadlines. Learn more How this model works A fixed-scope project follows a structured, predictable process from discovery to launch. Each phase has clearly defined deliverables, helping keep timelines, budgets, and expectations aligned. 01 Discovery We start by understanding your business goals, project context, and requirements in depth. Even when SRS or BRD documentation already exists, this phase helps validate assumptions and define deliverables more precisely. 04 Development Our team builds the product according to the agreed scope and specifications, following established coding standards and engineering best practices to ensure a robust and scalable solution. 02 Planning Based on the discovery findings, we create a clear project roadmap with timeline, milestones, and resource allocation. This ensures all stakeholders are aligned before execution begins. 05 Testing We validate the product against the defined requirements through functional, security, and performance testing. This ensures the solution is reliable, secure, and ready for release. 03 Design We translate requirements into wireframes, mockups, and prototypes that visualise the final product. This helps align stakeholders early and refine the user experience before development starts. 06 Deployment and Support We deploy the product to production and, where a support agreement is in place, provide ongoing maintenance and support. Roles and technologies you can get You can choose from a wide range of roles, from software engineers and QA specialists to product and design experts. Back-End Software PHP nodeJS .NET Java Python AI, ML and Data Python Spark R AWS PyTorch LlamaIndex LangChain LabelStudio Front-End Software React/Next Angular Flutter Vue.js CMS WordPress Shopware Strapi Drupal Contentful Sanity OutSystems Mobile Application Flutter Swift Kotlin Product Design Figma Sketch Adobe Creative Cloud (Photoshop, Illustrator, After Effects) Cursor Visual Studio Code AI-assisted Design Workflows Prototyping & Design Systems Cloud Infrastructure AWS Microsoft Azure Google Cloud Platform Kubernetes OpenShift AWS Lambda Client-hosted & On-Premises Environments From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Q in Numbers A snapshot of the metrics that reflect how we build, deliver, and support successful digital products. +65% Senior Experts 300+ IT Professionals 2000+ Talent Pool Across 5 Countries 9.3/10 Client Satisfaction Rate 4.8/5 Clutch Score with 30+ reviews 4x Voted Croatia’s Best Employer Partner with us Need a software project with clear scope, budget, and timeline? Contact us FAQ What is the difference between fixed scope and time and materials? With fixed scope, the requirements, budget, and timeline are agreed in advance. With time and materials, the scope can evolve over time, which gives more flexibility but less predictability. What happens if requirements change during a fixed scope project? Any changes to the agreed scope are handled through a formal change request process. This includes impact assessment on timeline, budget, and deliverables before implementation. Minor adjustments may be accommodated if balanced within the existing scope, but larger changes require re-estimation. How involved do I need to be during the project? Your involvement is highest during the discovery and planning phases, where requirements are defined and validated. During development, involvement is typically reduced to milestone reviews, feedback, and approvals. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Human-Agent Pods - Tech Consulting and Software Engineering URL: https://q.agency/cooperation-models/human-agent-pods/ Human-Agent Pods combine Q engineers and specialised AI agents into one delivery unit, helping teams reduce cost, speed up delivery, and keep human approval at every step. Human-Agent Pods | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Cooperation models > Human-Agent Pods Human-Agent Pods for Faster, Human-Gated AI Delivery Q engineers and specialised AI agents work as one delivery unit, with every output reviewed by a human expert. Contact Us Built for Teams That Need Speed and Accountability This model is especially useful when teams need to move quickly, but cannot afford vague ownership or unchecked automation. Human-Agent Pods give you the speed of AI-assisted delivery with the structure of a professional engineering team. 01. Faster Execution Agents support repetitive and specialist-heavy work in parallel. 02. Fewer Handoffs Smaller, focused pods keep context tighter. 03. Human Control Every agent is gated by a responsible human approver. 04. Clear Traceability Work can be reviewed, followed, and explained. Engineers and Agents, One Delivery Unit Human-Agent Pods are built around a simple idea that AI agents should not sit outside the delivery team . They work alongside Q engineers, analysts, designers, QA experts, and project leads, with humans approving the work before it moves forward. REQUIREMENTS & CONTEXT – AGENT-STRUCTURED, HUMAN-REVIEWED ARCHITECTURE & EXPERIENCE – AGENT-DESIGNED, HUMAN-VALIDATED PLANNING & DEVELOPMENT – AGENT-EXECUTED, HUMAN-OVERSEEN TESTING & VALIDATION – AGENT-TESTED, HUMAN-APPROVED Choose the Pod Model That Fits the Work Not every project needs the same structure. Human-Agent Pods can be shaped around the level of control, speed, traceability, and senior involvement your product actually needs. 01. Mirrored Pods One specialist works alongside one dedicated agent, enabling parallel execution, dual control and audit-grade traceability. This model is best suited to complex or regulated environments where oversight cannot be compromised. 02. Compressed Pods One senior generalist coordinates two or three agents to reduce handovers, lower blended cost and maintain a complete view of delivery. It works best for predictable work such as MVPs, internal tools and repeatable product tasks. Human-Gated by Design Every agent operates under human approval, with senior judgement, delivery context and accountability built into the workflow. Faster execution never means handing control to the model. Mirrored Pods When the work requires precision, traceability, or clear ownership, a Mirrored Pod gives every key specialist their own AI agent support. This keeps execution parallel, but decision-making controlled by experienced people. One specialist. One agent. Full control. Separate specialist ownership Parallel execution across disciplines Human approval before delivery moves forward Clear audit trail for regulated environments Compressed Pods For more predictable work, a Compressed Pod gives one senior expert the ability to coordinate several specialised agents at once. This reduces handoffs, keeps context in fewer hands, and helps teams move faster with a lower blended cost. One senior lead. Multiple agents. Leaner delivery. Fewer handovers across delivery Lower blended delivery cost One complete view of the work Built for MVPs, internal tools and repeatable tasks Lower Cost Without Losing Senior Oversight Focused AI agents accelerate execution, while senior specialists retain control of every critical decision. Every output stays reviewed, traceable and aligned with your security needs. Partner with us Build Faster With a Human-Agent Pod. Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Staff Augmentation URL: https://q.agency/cooperation-models/staff-augmentation/ Staff augmentation model: Extend your in-house team with senior engineers, increase delivery capacity, and stay in full control. Staff Augmentation | Cooperation Models | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Cooperation models > Staff Augmentation Staff Augmentation for Flexible Development Extend your in-house team with senior engineers, increase delivery capacity, and stay in full control. Contact Us What is staff augmentation Staff augmentation helps you quickly extend your in-house team with senior engineers, without the delays and commitments of hiring. It is a hiring model where external engineers join your team and are managed by your leads. Our engineers integrate into your processes and priorities, helping you increase capacity, fill specific skill gaps, and keep full control over delivery. When To Choose This Model Staff augmentation is the right choice when you need to quickly extend your in-house team with experienced software engineers while keeping full control over delivery. You Already Have Strong Leadership If you have a solid product owner and tech lead in place, you don’t need management — just more hands to execute. You Want to Stay in Control You prefer to lead delivery and embed external experts into your existing team. You Need Specific Expertise When your team is missing certain skills and you don’t want to hire full-time for them. You Want More Flexibility Easier to scale up or down compared to hiring, especially when priorities shift. Hiring is Too Slow If recruitment takes months and you need skilled people now, not later. You’re Scaling a Roadmap You have clear plans — you just need more capacity to deliver them. Proven Results from Staff Augmentation See how teams have used staff augmentation to add expertise, move faster, and keep full control of delivery. These examples show how it works in real projects. Explore all case studies Engineering a High-Traffic Digital Platform for The Sun’s 30+ Million Readers Handling high volumes of traffic with speed and reliability, ensuring a smooth and consistent experience for millions of readers. Learn more Scaling a Leading UK Fintech Platform Through Long-Term Product Development See how continuous product evolution helped improve platform stability, accelerate feature delivery, and support long-term user growth. Learn more How this model works A fixed-scope project follows a structured, predictable process from discovery to launch. Each phase has clearly defined deliverables, helping keep timelines, budgets, and expectations aligned. 01 Align on Goals and Team Setup Through a discovery workshop, we align on your business objectives, user needs, and delivery goals — defining the optimal team structure to support them. 04 Source and Vet Additional Talent When the right profiles aren’t available in our existing pool, we source external candidates and thoroughly test and interview them before onboarding. 02 Define Roles and Requirements We create detailed job specifications for each role, covering required skills, experience, and seniority to ensure the right fit from the start. 05 Ensure Smooth Integration We facilitate onboarding to ensure engineers integrate smoothly into your team, workflows, and culture. Onboarding can also take place on-site to accelerate alignment. 03 Curate the Candidate Shortlist We match your requirements against our 2000+ talent pool and provide a curated shortlist of suitable candidates. 06 Provide Ongoing Reporting We provide daily reports, stand-ups, and regular check-ins to ensure full visibility, track progress, and quickly address any issues. Roles and technology you can get You can augment your team with a wide range of roles, from software engineers and QA specialists to product and design experts. Back-End Software PHP nodeJS .NET Java Python AI, ML and Data Python Spark R AWS PyTorch LlamaIndex LangChain LabelStudio Front-End Software React/Next Angular Flutter Vue.js CMS WordPress Shopware Strapi Drupal Contentful Sanity OutSystems Mobile Application Flutter Swift Kotlin Product Design Figma Sketch Adobe Creative Cloud (Photoshop, Illustrator, After Effects) Cursor Visual Studio Code AI-assisted Design Workflows Prototyping & Design Systems Cloud Infrastructure AWS Microsoft Azure Google Cloud Platform Kubernetes OpenShift AWS Lambda Client-hosted & On-Premises Environments From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Q in Numbers A snapshot of the metrics that reflect how we build, deliver, and support successful digital products. +65% Senior Experts 300+ IT Professionals 2000+ Talent Pool Across 5 Countries 9.3/10 Client Satisfaction Rate 4.8/5 Clutch Score with 30+ reviews 4x Voted Croatia’s Best Employer Partner with us Need to extend your team with senior engineers? Contact us FAQ What is the difference between staff augmentation and outsourcing? With staff augmentation, you manage the developers directly and integrate them into your team. With outsourcing, you delegate the entire project to an external partner who manages delivery. Staff augmentation = more control , Outsourcing = less involvement, more delegation . When should I choose staff augmentation over hiring in-house developers? Choose staff augmentation when you need to fill skill gaps quickly, avoid long hiring cycles, and scale your team flexibly. It’s ideal for fast-growing teams that need immediate capacity without long-term commitments. How quickly can I scale my team with staff augmentation? In most cases, you can onboard developers within days or weeks, depending on the role and requirements. This is significantly faster than traditional hiring, which can take months. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Team as a Service URL: https://q.agency/cooperation-models/team-as-a-service/ Team as a Service model: Get a dedicated product team, ensure continuous delivery, and scale your product with full ownership and stability. Team as a Service | Cooperation Models | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Cooperation models > Team as a Service Team as a Service for End-to-End Product Delivery Get a dedicated product team that takes full ownership of building, maintaining, and scaling your product. Contact Us What is team as a service? Team as a Service is a model where a dedicated product team delivers your product end-to-end, without you managing individual developers. It combines engineering, product, and design expertise into a single, self-sufficient unit focused on delivering results. When To Choose This Model? Unlike staff augmentation , you don’t manage developers, our team delivers the product. Team as a Service is the right choice when you need a reliable partner to take ownership of your product and scale delivery without managing individual resources. Need a Full Product Team A cross-functional team that brings together engineering, QA, product, and design, covering everything required to build and scale your product without relying on individual roles. Building or Scaling a Product Continuous development, iteration, and long-term evolution require a team that can support product growth over time. You’re Focused on Business, Not Delivery Strategy, stakeholders, and growth stay in focus while a dedicated team takes full ownership of execution and day-to-day development. Avoiding Hiring Bottlenecks Starting quickly without long recruitment cycles, onboarding delays, or resourcing gaps allows faster progress from day one. Predictable Costs and Delivery Matter A fixed monthly model provides consistent output, stable team velocity, and clear expectations without unexpected changes in capacity. Looking for a Long-Term Tech Partner Working with a team that understands your product and takes ownership enables stability, continuity, and long-term growth. Proven Results from Team as a Service See how companies have used Team as a Service to accelerate delivery, gain a dedicated product team, and scale with more ownership and stability. These examples show how the model works in real projects. Beyond the Chatbot: AN AI Ecosystem for Mental Wellbeing Learn how Q helped HARVN increase efficiency and unlock new growth opportunities with AI-powered solutions. Learn more Travel Platform for One of the UK’s Largest Publishing Houses See how continuous product evolution helped improve platform stability, accelerate feature delivery, and support long-term user growth. Learn more How this model works We build, integrate, and manage a dedicated product team that works as an extension of your organisation, taking ownership from day one 01 Define Scope and Responsibilities Through a discovery workshop, we align on your business objectives, user needs, and delivery goals, defining the optimal team structure to support them. 04 Deliver and Iterate The team takes ownership of development, QA, infrastructure, and deployment, delivering continuously and adapting based on feedback. 02 Build and Onboard the Team We assemble a cross-functional team tailored to your product and quickly onboard it using established frameworks, processes, and best practices. 05 Monitor Performance We ensure consistent team performance, stable velocity, and predictable delivery throughout the engagement. 03 Plan the Product Roadmap Together, we define priorities, milestones, and a high-level roadmap aligned with your business objectives. 06 Continuously Improve We manage team operations, quality, and delivery processes to keep improving efficiency and long-term outcomes. What Your Team as a Service Includes A dedicated, cross-functional team tailored to your product, goals, and delivery needs. Back-End Software PHP nodeJS .NET Java Python AI, ML and Data Python Spark R AWS PyTorch LlamaIndex LangChain LabelStudio Front-End Software React/Next Angular Flutter Vue.js CMS WordPress Shopware Strapi Drupal Contentful Sanity OutSystems Mobile Application Flutter Swift Kotlin Product Design Figma Sketch Adobe Creative Cloud (Photoshop, Illustrator, After Effects) Cursor Visual Studio Code AI-assisted Design Workflows Prototyping & Design Systems Cloud Infrastructure AWS Microsoft Azure Google Cloud Platform Kubernetes OpenShift AWS Lambda Client-hosted & On-Premises Environments From ISO to AWS, we got it Quality & reliability We pride ourselves on delivering top-tier quality and reliability, backed by our AWS Select Tier partnership and recognition by Clutch as one of the top 15 companies in our field . Our commitment is reinforced through ISO-certified standards in quality, security, and privacy – ensuring our clients receive services that are consistently secure, compliant, and dependable. Q in Numbers A snapshot of the metrics that reflect how we build, deliver, and support successful digital products. +65% Senior Experts 300+ IT Professionals 2000+ Talent Pool Across 5 Countries 9.3/10 Client Satisfaction Rate 4.8/5 Clutch Score with 30+ reviews 4x Voted Croatia’s Best Employer Partner with us Ready to hire a team that takes ownership and delivers results? Contact us FAQ What is Team as a Service in software development? Team as a Service is a model where a dedicated product team takes full responsibility for delivering and maintaining your digital product. How is Team as a Service different from staff augmentation? With TaaS, you get a full team that owns delivery. With staff augmentation, you manage individual developers yourself. What does a Team as a Service include? A typical team includes engineers, QA specialists, product managers, designers, and technical leader How does Team as a Service work with my internal team? TaaS teams work as an extension of your organisation, collaborating with internal stakeholders while taking full responsibility for delivery. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Case studies URL: https://q.agency/case-studies/ Case studies: See how we work with global brands like The Sun, BBC, and Sandoz through long-term technology partnerships. Case studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Case studies Our Clients’ Success Stories Case studies show how we work with global companies across industries, helping them improve systems, build new products, and scale their technology through long-term collaboration and reliable delivery. Digitising Global Recruitment with an Assessment Platform Simplifying access to job opportunities by making the application process faster, clearer, and more user-friendly. Read Manpower Case Study Engineering a High-Traffic Digital Platform for 30+ Million Readers Staff augmentation with The Sun’s in-house team, supporting the continuous development and performance optimisation. Read The sun case study Scaling a Leading UK Fintech Platform Through Long-Term Product Development See how continuous product evolution and close collaboration helped improve platform stability, accelerate feature delivery, and support long-term user growth. Read smart pension case study Building a Scalable Real-Time Drug Shortage Platform for multiple Markets Discover how improved data visibility and real-time insights help stakeholders react faster, reduce risk, and ensure better availability of critical medications. read sandoz case study OPTIMISING INFRASTRUCTURE FOR A HIGH-TRAFFIC DIGITAL PLATFORM See how Q helped Times Travel deliver a smoother, more intuitive way to explore and book trips online. read the times travel case study TRANSFORMING PERSONAL FINANCE INTO A SEAMLESS DIGITAL EXPERIENCE From product discovery to full web app development, enabling users to make better financial decisions through a scalable digital platform. read the money mentor case study MAKING CRITICAL HEALTH INFORMATION ACCESSIBLE DURING A GLOBAL CRISIS Transforming complex data into clear, user-friendly insights that enabled millions to stay informed and make better decisions. read BBC case study IMPROVING OPERATIONAL EFFICIENCY WITH A CUSTOM DIGITAL SOLUTION Learn how Q helped Subsea 7 simplify workflows and improve visibility across critical operational processes. read subsea7 case study CONNECTING +10 MILLION PEOPLE THROUGH A SCALABLE PLATFORM See how Q streamlined the connection between candidates and employers, making the hiring process faster and more effective. read labour market platform case study BRINGING HEALTHCARE PRODUCTS TO LIFE WITH 3D TECHNOLOGY Discover how Q improved efficiency and usability, making it easier for users to access and manage essential healthcare services. read medi case study Engineering an AI Ecosystem for Structured Decision Clarity See how Q transformed HARVN’s AI product vision into a scalable digital ecosystem for decision clarity and structured reflection, helping turn complex user needs into a reliable, intuitive, and production-ready solution. read hARVN case study AI-Driven Hiring Engine That Cuts Time-to-Fill by 56% Learn how Q helped Hyr transform high-volume recruitment into a faster, smarter AI-driven hiring engine that reduces screening noise, surfaces best-fit candidates, and cuts time-to-fill by 56%. read hyr case study CREATING A DIGITAL EXPERIENCE FOR A LEADING LUXURY DESTINATION By bringing clarity to complex event environments, Q improved how visitors explore, plan, and engage with content. read via riyadh case study CONNECTING A RACING BRAND WITH ITS DIGITAL AUDIENCE By rethinking the online experience, Q made it easier for users to explore models, engage with the brand, and follow its racing story. read ginetta case study BUILDING INTERNAL SOCIAL NETWORK TO IMPROVE EMPLOYEE ENGAGEMENT From product strategy and UX design to full mobile app development, creating a platform that strengthens communication, feedback, and company culture. read jenz case study SIMPLIFYING CAMPER BOOKING THROUGH DIGITAL PRODUCT DESIGN Designing and developing a platform that enables users to book campers and trips quickly, with a seamless and intuitive user flow. read freeway camper case study MAKING PURPOSE-DRIVEN CONTENT EASIER TO DISCOVER AND ACT ON Q helped shape a platform where users can easily explore content, engage with stories, and take action around environmental causes. read waterbear case study ENCOURAGING HEALTHIER HABITS THROUGH DIGITAL fitness platform By simplifying tracking and adding motivational elements, Q helped users stay consistent and more involved in their health goals. read stepathlon case study BRINGING STRUCTURE TO DIGITAL TRAINING PROGRAMS Q helped structure and deliver training programs in a way that makes it easier for users to follow, learn, and stay consistent. read airex case study SIMPLIFYING DAILY OPERATIONS IN THE ENERGY SECTOR By supporting the transition from manual to digital processes, Q helped teams save time and reduce operational complexity. read Energy App case study MAKING HIGH-END VEHICLES EASIER TO EXPLORE AND COMPARE Q helped present the dealership’s offer in a clearer and more structured way, improving how users browse, evaluate, and choose vehicles. read car dealership case study Eliminating Vulnerabilities and Reducing Cost by 32% How Q’s technology due diligence unlocked risks and discovered opportunities for the world’s largest obstacle course race read spartan race case study AI Chatbot for Secure, Flexible and Independent Deployment A reliable, responsive, and adaptable chatbot solution that meets the dynamic needs of enterprise users. Read AI Chatbot Case study From RFP to Proposal: AI-Powered Project Estimation Our in-house AI solution automates key estimation processes, reducing time and enhancing accuracy. It meets high standards for reliability and efficiency. Read estimate tool case study Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Labour Market URL: https://q.agency/case-studies/a-labour-market-platform/ Labour Market Platform case study: Building a scalable digital ecosystem connecting over 10 million users. Labour Market | Case Studies| Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Labour Market: Developing a Web Platform for 10+ Million Users Labour Market Developing a Web Platform for 10+ Million Users November 28, 2024 — 3 min read More than 10 development teams built a platform for the labour market Team size 60 People Headquarters Middle East Industry Government Deliverables Web app What we did Backend development, Frontend development, UX/UI design, QA, Project, Program and Portfolio Management, Solution Architecture, Business Analysis, DevOps, Dedicated teams, Support Results Achieved 10+ services Developed and maintained 10+ million People using the services 10+ Development teams About the Client The client is a leading government company in the Middle East. With its modern concept, it targets and serves individuals and prominent labour segments of the public and private sectors. The company aims to empower, achieve, and create a positive sustainable change in its country’s labour market and strives to sustain a lasting impact that would benefit society. One of its prominent roles is to represent the Government institution of which it is a filial daughter, and to achieve its goals to improve and develop the local labour market and the work environment in both government and private institutions benefiting employers, employees, and job-seekers alike. In this labour market platform case study, you’ll discover how we designed and scaled a digital ecosystem to support these goals and drive measurable impact. Discovery The discovery process for this project is a continuous and iterative approach, due to the nature of the platform’s frequent upgrades and evolving requirements. Stakeholders from the government sector are regularly consulted to identify pain points, user needs, and regulatory requirements. Feedback loops are established with the client to ensure the services evolve in line with market demands. Additionally, in-depth analysis of current services as well as potential improvements helps in refining services, ensuring they remain relevant and impactful. Design The design process is a collaborative effort between our internal designers and a dedicated external design team. While the external team focuses on the overall user experience and aligning the design with brand guidelines, our internal designers take a more hands-on role in conceptualising and developing Proof of Concepts (POCs) for new services and functionalities. This iterative process involves creating wireframes, prototypes, and mockups, followed by testing with key stakeholders and users to validate usability and functionality. Close coordination ensures alignment on design principles while allowing flexibility for innovation in service offerings. Development Our development process follows an Agile methodology, primarily using Scrum, but it is tailored to meet the specific needs of each project. Cross-functional teams are composed of key roles including Scrum Masters, Business Analysts, QA engineers, DevOps, Frontend and Backend developers, and Solution Architects. The process begins with sprint planning, where tasks are prioritised and broken down into manageable increments. Daily standups ensure continuous communication and progress tracking. Sprints typically last 2 weeks, culminating in reviews and retrospectives. Throughout, teams collaborate closely with stakeholders and the design team, continuously integrating feedback and delivering incremental improvements. DevOps ensures smooth deployments and continuous integration, while QA ensures quality and performance at every stage of development. End Result There are multiple end results including over 10 integrated services with a user base exceeding 10 million, tailored to improve the local labour market and enhance the work environment for government, private sectors, employers, employees, and job-seekers. These services offer seamless management of work permits, employee profiles, training, violations, and certificates, providing users with intuitive, efficient tools to navigate the labour ecosystem. The continuous collaboration between development, design, and stakeholders ensures a scalable, sustainable platform that evolves with changing labour market needs, delivering impactful, user-centered solutions. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Airex URL: https://q.agency/case-studies/airex/ Airex case study: Building a digital training platform that transforms a product-based business into a service ecosystem. Airex | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Airex: Mobile and Web App for a Training Community Airex Mobile and Web App for a Training Community November 28, 2024 — 2 min read Development of the digital platform selling high-quality training mats Team size 8 People Headquarters Switzerland Industry Training and therapy Deliverables Mobile app, Web app What we did Product Vision & Strategy, User Research, Product Discovery, UX & UI Design , Web And Mobile App Results Achieved In-app Purchase and user engagement 40+ Pre-recorded training videos 100% Live stream & screencasting About the Client Airex is a company that produces high-quality training mats. A new digital touchpoint was an opportunity for them to expand from a product company to a service-oriented organisation. Discovery Q team conducted a much needed user and trainer research to gain a deep understanding of the challenges and opportunities of digital training apps. This project relies on connecting trainers and users through quality content that fosters mutual trust and learning. Q pinpointed an idea to create the Airex digital platform for lifestyle and training that would boost Airex product sales. Shaping and creating a mobile app and web app that engages more users and trainers, helped the company build a trustworthy relationship with amazing Airex products. Design By establishing user groups, we began creating the logic behind them. To train, all you need to do is register or log in, explore the video training options, and choose the type and difficulty of workout you would like to do. With the Airex platform, customers can train safely at home without the pressure of peers. Training is enhanced with seamless communication and supportive video content. Development A subscription model with full training content was one of the most important features. End Result Our experience developing the Airex training app and website highlighted the crucial role that community plays in supporting both physical and mental health. What Our Client Said “When we started to talk with you guys, it was a bit kitschy, but maybe like ‘Singing in the rain’, it was like love on first view. We said “okay those guys understand us”, they are keen on getting to know our business, they don’t treat us just like a client. I feel when I work with you, I feel like you are my prolonged hand.” Thorsten Walter Director Soft Foams & Director Marketing, Airex General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Automation App for Energy Industry URL: https://q.agency/case-studies/automatisation-app-for-energy-industry/ Automation App for Energy Industry case study: Automating energy processes to improve efficiency and control. Automation App for Energy Industry | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Automation App for Energy Industry Automation App for Energy Industry November 27, 2024 — 2 min read User process automation project delivered with Staff augmentation model of cooperation Team size 1 Person Headquarters United Kingdom Industry Energy/Oil & Gas Deliverables Console Apps, Web API, Vue, SSRS, Power BI, Power Automate, Grafana, Prometheus, Loki What we did Prototyping, Execution Results Achieved Automation Automation of user processes About the Client Our client is a refining and energy trading joint venture between two major global corporations in the oil industry. They are a young and ambitious company with a dynamic approach to business and a strong drive for sustainable growth. Their highly experienced teams trade a comprehensive range of energy products, supported by a network of professional teams across the globe, enabling their customers to benefit from their ability to leverage shareholders’ global network. Trading is carried out by three divisions: crude, refined products, and power & emissions. Strategically located refineries represent some of Europe’s longest standing crude oil refineries. Refineries supply fuel to local as well as international markets. Between them, the two refineries process hundreds of thousands of barrels of crude oil per day. Discovery There was no discovery held with the client, as Q provided a software developer as a team augmentation partner. Design Q was not involved in any of design tasks. Software development was the only task completed from Q’s side. Development Full stack development was needed. From architecture of small components to the development of the same ones and BAU tasks. There were a variety of them, such as reports, stored procedures, queries etc. End result Automatization of user processes. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # BBC Pandemic URL: https://q.agency/case-studies/bbc-pandemic/ BBC Pandemic case study: Designing a privacy-first citizen science app that collects real-world movement data. BBC Pandemic | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > BBC Pandemic: Developing the No.1 Medical App in the UK BBC Pandemic Developing the No.1 Medical App in the UK November 28, 2024 — 2 min read Mobile app that can simulate the spread of a pandemic Team size 6 People Headquarters United Kingdom Industry Health Deliverables Mobile app What we did Tehnical Product Discovery, Prototype and Mobile app Results Achieved No.1 Medical APP in the UK (Google Play Store, App Store) 100.000 Participants 100% Data anonimisation About the Client Big Motive is a company that makes digital products and services that improve people’s lives. They partnered with Q to build an app that would simulate and predict future pandemic spread. It was a ground-breaking nationwide citizen experiment that gathered data to help researchers predict the potential spread of a deadly flu outbreak across the UK. Discovery Throughout medical history, flu outbreaks have been a constant threat. The catastrophic impact of COVID-19 brought the world to its knees in 2021. Q partnered with Big Motive, a Belfast-based design and innovation studio, to create a unique mobile app for this groundbreaking scientific experiment. Enrolling at least 10,000 participants to submit their answers and data via the app was crucial to the success of the experiment. Design Big Motive has created the design for the mobile app. Development The system was designed and developed to completely anonymise data, excluding any identifying information. Understanding what users are agreeing to is crucial to building trust that will encourage them to participate. The app uses strict policy procedures and security features to prevent unauthorised access or misuse of any personal information. End Result By inviting the people to participate in this nationwide experiment, with the BBC Pandemic app, they could improve the understanding and quality of data that could potentially provide scientific models to fight back against the virus. Over 100 000 people took part in this experiment and helped create a new gold dataset standard for the future. BBC Pandemic mobile app could be a key factor in preparing for the next pandemic outbreak by identifying the human networks and behaviors that could potentially spread the virus. In the future, the application will help make more accurate predictions and models for outbreak control. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Training Management Platform URL: https://q.agency/case-studies/digital-training-management-platform/ Digital training management platform case study: Streamlining training workflows—from licensing to user progress tracking. Training Management Platform | Case Study | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Building an End-to-End Digital Training Management Platform Building an End-to-End Digital Training Management Platform November 21, 2024 — 3 min read A software solution which covers licensing, obtaining approvals, to users searching for training and monitoring their progress. Team size 10 People Headquarters Riyadh Industry Education Deliverables Web app What we did UX/UI design, Solution Architecture, PHP and React development, Business analysis, Project management, Dedicated development team Results Achieved From scratch Building an enhanced training management platform Connect Different parts of the platform into a fully integrated solution 100% Solution documentation for maintenance and extension About the Client Our client is a government entity specialised in information technology. They design and build digital services that empower the Government’s digital transformation of public and private sectors. Its mission is to drive transformation by delivering sustainable value through their digital ecosystem. Discovery The idea behind enhancing the digital private training system was to improve user experience (making it more straightforward and user friendly), increase automation level, add new features, connect different parts of the platform into fully integrated solution and use the latest technology. The approach was to rebuild and improve the existing solution. An additional goal was to add trainees to the platform, enabling them to monitor their progress and share feedback. The new solution aims to achieve a better and more efficient administrative experience for both training institutions and trainees. Design It was important to understand multiple separate modules and integrate them into a single solution. The Q team was actively involved with the Product owner in order to come out with the optimal user experience and at the same time fully adhere to the regulatory process. Q team created unified design components simplifying user navigation and at the same time increasing the development speed and simplifying the maintenance. Development The Q team consisted of a solution architect, three backend developers (PHP), two frontend developers (React), two designers, a QA specialist with experience in test automation, a business analyst, and a project manager. The Q team collaborated closely with the client’s developers. With the web application, both training companies administratives and trainees can go through the entire user flow using only one platform. The solution was developed using the Microservice architecture, which allows for the distribution of workload to multiple development teams and module-level deployments. The front-end followed the same principle with a Microfrontend approach. End Result Q team helped the Client build an enhanced training management platform covering the whole business journey, from licensing of training organisations, obtaining approvals for training programs, to trainees searching for the desired training and monitoring their education and certification progress. The user flow has been enhanced and simplified, and the system architecture is optimally configured. We have established a solid foundation for future system extensions and modifications. The solution is well documented, which is enabling our Client’s teams to maintain and extend it, according to their business needs. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Freeway Camper URL: https://q.agency/case-studies/freeway-camper/ Freeway Camper case study: A seamless digital booking platform for camper travel, enabling fast reservations and intuitive user flows. Freeway Camper | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Freeway Camper: Web App For a Modern Camper Rental Company Freeway Camper Web App For a Modern Camper Rental Company November 28, 2024 — 3 min read Development and Design of the Web App Team size 5 People Headquarters Germany Industry Travel Deliverables Web app What we did Strategy product discovery, UX/UI, Web App, QA Automation Results Achieved 4+ New branches opened 1+ Zendesk chat integration 100% Booking integration About the Client The idea for the Freeway Camper platform came from three young founders in Munich that wanted to lead the entire camping industry into the digital age. They rounded up the investment through FlixBus founders and started a platform for campers and motorhomes renting in Germany. Currently, FreewayCamper operates a rental station in the south of Munich and offers a wide portfolio of campers and motorhomes for every need. They continue to modernise the industry with new stations and the possibility to book campsites. In this Freeway Camper case study, you’ll learn how we built and scaled a digital platform to support their rapid growth and transform the camper booking experience. Discovery The Freeway Camper team noticed that the camping market didn’t change for many years. Planning and booking a trip with your laptop or phone is practically not even an option compared to other types of travel. Creating a fully digitalised booking experience results in less friction and a seamless user experience for everyone. Since Q created many digital booking products with great user experience, it was interesting to study their solutions and translate that knowledge to create user flows and a sitemap for the web. Design: Seamless Flow and Functionality Through a lean and agile approach, the Q team managed to create an MVP in less than 6 months. Since the launch of the platform, a dedicated team of experts has continuously improved the web application based on user feedback. The crucial functionality of Freeway Camper is booking campers or campsites. The primary design impact of the product is allowing users to book quickly, without additional questions and non-essential information. Good flow creates happy users. Together, the team developed a strategy for a modern digital booking platform where users can book their camper and their camping adventure. Development The Q team worked on building several different development layers of the platform: Craft, Symfony and Planyo. End Result More and more people envision their vacations away from mass tourism. A personalised travel experience connects them more to nature and local attractions. What Our Client Said “Fixes were done immediately by the team.” Nikolai Voitiouk-Blum CEO & Co-Founder, FreewayCamper GmbH General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Ginetta URL: https://q.agency/case-studies/ginetta/ Ginetta case study: Building a high-performance digital platform that enhances brand experience and supports growth in the automotive sector. Ginetta | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Ginetta: E-commerce Platform for Automotive Industry Ginetta E-commerce Platform for Automotive Industry November 19, 2024 — 3 min read Custom ecommerce solution and inventory management system Team size 5 People Headquarters United Kingdom Industry Motorsport Deliverables Commerce platform for cars and sporting goods, Championship dashboard for race management What we did Digital Strategy, UX Design, UI Design, User Flow, Website, Web App, Ecommerce platform, Championship Dashboard Results Achieved 29% Rise in user engagement 18% Rise in operational efficiency 100% Data-driven decision making About the Client Ginetta is a British race car and sports car manufacturer with a successful history in motorsport dating back to 1958. The company produces a range of race cars, including GT4, LMP3, and single-seater models. Ginetta has achieved numerous championship wins and race victories worldwide. Additionally, Ginetta produces road-going sports cars such as the G4, G12, and G40 models. The highly competitive nature of motorsport pushed Ginetta to develop proprietary in-house software solutions for resource management, performance monitoring, customer relationships, and data-driven decision making. In order to give their teams access to crucial data in real time, the company teamed up with Q to create an ecommerce platform and a Championship Dashboard. Discovery Defined project objectives, success metrics, and established a timeline and budget with the goal of increasing online sales and improving user experience. Conducted market and user research to better understand customer needs and preferences, identify industry trends, and refine project objectives. Prioritised key features and created a roadmap for the ecommerce platform and Championship Dashboard Design Design Created user stories, personas, and wireframes to better understand user requirements and design the best possible user experience. Created a custom design for the ecommerce platform and Championship Dashboard that aligns with the Ginetta brand, increases user engagement, and streamlines the purchasing process. Iterated on the design based on ongoing feedback and testing to ensure optimal performance and user satisfaction. Development Built the ecommerce platform and Championship Dashboard with a flexible and customisable technology stack that met Ginetta’s specific needs, with a focus on speed, security, and scalability. Utilised agile methodologies to rapidly develop and test solutions, resulting in a quick time-to-market and ongoing feature enhancements. Custom features for the e-commerce platform, including a product configurator and advanced search functionality, were developed to create a more personalised and efficient user experience. End Result Ginetta’s partnership with Q resulted in the development of two bespoke software solutions. The ecommerce platform was designed to provide a seamless shopping experience to customers, with an intuitive user interface, multiple payment options, and an inventory management system that allows Ginetta to manage their product listings easily. The Championship Dashboard provides Ginetta’s teams with real-time data and insights, enabling them to optimise their performance and make data-driven decisions. The Dashboard is built using modern data visualisation tools and features customisable dashboards that can be tailored to the needs of individual teams. Ginetta is now positioned as a leader in the motorsport industry, with a strong digital presence that sets them apart from the competition. Ginetta now has the tools it needs to succeed both on and off the track, thanks to Q’s expertise and innovation. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # HARVN URL: https://q.agency/case-studies/harvn/ HARVN case study: Building a privacy-first AI platform with secure architecture, advanced AI integration, and seamless user experience. HARVN | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > HARVN: Engineering an AI Ecosystem for Structured Decision Clarity HARVN Engineering an AI Ecosystem for Structured Decision Clarity March 6, 2026 — 8 min read Beyond the Chatbot Team size 10 People Headquarters Geneva, Switzerland Industry HR, MedTech Deliverables Mobile App, Web App, AI Chat Platform, Backend API, Enterprise & Personal Knowledge Systems, Subscription & Billing System What we did UX/UI design, Full-Stack Development, Multi-RAG and Vector Search System Architecture, Document Intelligence & Ingestion Design, Business Analysis, Quality Assurance Results Achieved 1000+ Downloads in the first month 5 Languages 2 Applications About the Client Based in Geneva, HARVN Labs is building an AI-assisted reasoning environment designed to help people slow down, think clearly, and reflect with structure — positioning their B2C HARVN Life app as an ethical, multilingual AI for clear thinking, designed and hosted in Switzerland. In the HARVN case study, you will learn how their first product, HARVN Life, is a consumer app focused on private, personalised AI conversational system for reflective thinking and structured reflection, available on both Apple Store and Google Play. Next, with our help as their main tech partner, we’re preparing HARVN Pro, a B2B offering aimed at managers and teams — bringing the same structured reasoning depth into organisations. Background & Challenges Cognitive Overload & Lack Of Clarity As the world grows more complex, fast-moving, and uncertain, many struggle to think clearly and manage overwhelming thoughts, especially when emotions, confusion, stress, or decision overload make it hard to reflect constructively. People need a private space to organise thoughts, reduce overwhelm, and make better decisions without judgment or distraction. Customer’s cognitive clarity requires constant iteration. Trust in the field of structured reflection takes time to build, while our initial assumptions about users’ behavioural paths had to keep evolving along the way. The Need for a Sparring Partner in a Complex World Nowadays, uncertainty is everywhere, and complexity has become the norm, leaving many leaders and individuals struggling to think clearly. The initial HARVN app idea started as a a focused tool for professionals supporting others, but the vision quickly broadened into a digital “sparring partner” — a tool to challenge assumptions, add fresh perspectives, and support better decisions without fear of judgment. The Technical Gap The HARVN team has for a long time had strong expertise in business logic, psychology, and reflective AI environment frameworks, but not the in-house technical capability to build the product. They needed an advanced AI solution that could function across Azure AI, Google Play and Apple App Store, but local Swiss talent was either unavailable or came at a price point outside the budget. The Search for the Right Partner Our partners needed more than a typical dev shop, but rather a partner who could turn psychological nuance into code. After an extensive search and competitive RFP process, the HARVN chose Q for our fast responsiveness, professionalism, and ability to provide a cohesive team rather than individual freelancers. Solution & Implementation Development & Design UX/UI Design For HARVN, the design approach focused on clarity, trust, and guided interaction. Since the product is AI-driven, special attention was given to making complex functionality feel intuitive and safe for end users. We designed a clean, distraction-free interface with strong typographic hierarchy, clear feedback states, and transparent system messaging. The goal was to reduce cognitive load while maintaining full visibility into AI-generated outputs and system actions. Backend & Architecture HARVN backend is built using FastAPI with a modular and scalable architecture. The system integrates AI services, streaming responses, authentication flows, structured logging, and environment isolation across development, staging, and production environments. The platform uses PostgreSQL for data persistence and follows strict configuration management practices, including secure secret handling andenvironment-specific deployments to ensure stability and maintainability. Web Application (React) The web platform was developed using React with a component-driven architecture. The application supports real-time AI streaming responses, structured data rendering, authentication flows, and responsive layouts. Special attention was given to performance, state management, and clear separation between UI components and business logic. The system was signed to scale alongside backend AI capabilities and future feature expansion. Mobile Application (Flutter) The mobile application was developed in Flutter to provide a cross-platform experience for iOS and Android. The app integrates AI interactions, voice capabilities, authentication, and secure API communication. Mobile-specific considerations included performance optimization, secure token handling, platform permissions management, and maintaining UX consistency with the web experience. AI & Intelligence Layer A key part of HARVN is its AI orchestration layer. We implemented a structured prompt framework and controlled output formatting to ensure reliable, production-safe AI interactions. Development was carried out in close collaboration with the client’s domain experts. We designed a controlled prompt layer that allowed domain-specific knowledge to be injected and continuously refined based on real-world expertise. This ensured that AI outputs were aligned with industry standards, internal processes, and business context, rather than remaining generic responses. Infrastructure & Compliance The platform was deployed on Azure infrastructure with region-specific configuration to ensure data residency within the client’s country. File storage, processing, and AI interactions were configured in alignment with security and compliance requirements, ensuring that sensitive data remained within controlled geographic boundaries. Environment separation, secure secret management, CI/CD pipelines, containerization, and monitoring mechanisms were implemented to maintain a robust and enterprise-grade system. A Dual-Ecosystem Approach: HARVN Life & HARVN Pro To address the full spectrum of human judgment, the solution is architected into two complementary products: HARVN Life (B2C): A personal space for individuals to navigate life’s complexities. Unlike competitors offering “quick fixes,” this app utilises reflective and systems-oriented conversational frameworks to facilitate deep, meaningful conversations. HARVN Pro (B2B): Designed for management teams, this tool is aimed to help companies bridge the gap between their published values and real-world behaviours. It acts as an on-demand resource to support managers in navigating high-pressure situations more coherently by helping managers navigate high-pressure situations. HARVN’s USP: Trust & Privacy by Design A core differentiator of our client in the implementation is Swiss Privacy . The architecture was built to ensure that, particularly for the B2B product, no performance KPIs or private data are ever shared with HR. This “zero-knowledge” approach ensures users feel safe enough to be honest, which is critical for the AI to provide genuine value. Our Teams Work in a One Team Atmosphere The development process is characterised by a “one team” atmosphere. Q’s team doesn’t just execute tickets; they adopted the product as their own, often referring to it as “our product”. This deep engagement allows for flexibility — when cost constraints arose, Q’s management and legal teams managed to work creatively to adjust the team size without stalling progress. The result is a sleek, dark-mode interface designed to offer clarity through conversation and calm through structure. Results & Impact With over 1000 downloads and active users in the first month post-launch, Harvn Life is gaining real traction in its earliest phase, supporting people as they untangle cognitive noise, regain clarity, and turn reflection into actionable insight. Validating the “Inner Mirror” Although HARVN Life app (B2C) is in its launch phase, early testing has validated the core value proposition: The app successfully helps users externalise and structure their thinking. Testers report that it reduces confusion, helps users regain perspective and structure their thinking under pressure, and reveals blind spots, allowing them to regain control over their spiralling thoughts. Strategic Clarity The collaboration has also helped the business pivot strategically. Recognizing that B2C adoption requires significant time to build trust, the company is now rolling out the B2B offering,HARVN Pro, to generate immediate value for organisations while the consumer brand grows. Next Phase: Transforming Corporate Training With HARVN Pro Early feedback on HARVN Pro from a large enterprise client highlighted massive potential for efficiency. The AI platform helps close the gap between theoretical management training and practical application, effectively reducing the training hours required while increasing the impact on everyday team situations. Key Takeaways & Lessons Learned Refining the Journey One major lesson was that the customer journey is “a science” that requires constant iteration. The team learned that building trust in the reasoning support space takes time and that the initial assumptions about user acquisition paths needed to evolve. Voices from Our Partners The founders, Jean-Claude and Stefano, highlighted that the success of the project relied heavily on the unique dynamic of both HARVN’s and Q’s team. “Q’s deliverable quality in response to the RFP was amazing, and we appreciated the teamwork atmosphere during calls! And now, the next steps ahead of us focus on bringing the apps to market and scaling revenue to support the company’s further growth.” Stefano Mastrogiacomo Chief Operating & Product Officer “The Q team members often refer to HARVN as ‘our product’ and truly enjoyed developing it from scratch. It isn’t just a provider relationship; they feel like part of the HARVN team.” “A major lesson is that building a product takes time. In the IT and AI space, you expect rapid results, but you have to balance agility with patience to avoid hitting a wall.” Jean-Claude Maillard Chief Executive Officer Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Hyr: AI-Driven Hiring Engine That Cuts Time-to-Fill by 56% - Tech Consulting and Software Engineering URL: https://q.agency/case-studies/hyr-ai-driven-hiring-engine-that-cuts-time-to-fill-by-56/ Read more on how we helped Hyr build an AI-driven hiring engine that cuts time-to-fill by 56%, leading to smarter hiring decisions. Hyr: AI-Driven Hiring Engine That Cuts Time-to-Fill by 56%  | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Hyr: AI-Driven Hiring Engine That Cuts Time-to-Fill by 56% Hyr AI-Driven Hiring Engine That Cuts Time-to-Fill by 56% May 5, 2026 — 4 min read Hyr partnered with Q to build the ’10x Hiring Sprint’ AI-driven engine. It speeds up the selection process, saves the cost and is disrupting the hiring space with its innovative and intuitive features. Team size 8 People Headquarters United States Industry HR Tech / SaaS Deliverables Web Application, AI Engine What we did UX/UI Design, AI Engineering (LLM/RAG), Full-Stack Development Results Achieved 40% Cost Reduction Reduced Cost-Per-Hire by up to 40% 56% Faster Time-to-Fill Reduced Time-to-Fill from 45 days to under 20 Fair & Bias-Free 360° A full picture of each applicant, beyond keyword matching. About the Client Hyr is our partner based in the USA, that provides an AI-driven intelligent screening layer that seamlessly integrates into a company’s existing hiring process. Its web app reads each job application, builds a 360-degree view of skills , experience and psychometric signals required for the job (the “Ideal Candidate Profile”), then scores every applicant submission against the ICP. The result is a clear Talent Leaderboard that cuts out most unqualified applicants and highlights the top few percent who truly fit the role. Background & Challenges The main challenge in recruiting has switched greatly. The last decade looked somewhat like “searching for a needle in a haystack’. But this haystack is now full of millions of AI-generated resumes, a.k.a. needles, due to the availability of generative AI.And that’s how the idea for Hyr was born. Hyr was built for lower to mid-market companies (200–1,500 employees) managing high-volume hiring as well as high-growth Series B/C “Velocity” startups that need to scale fast. That shared focus on speed and volume is what brought us together, and ultimately led to a partnership where we designed and built their enterprise grade web app. How Hyr Helps Recruiters Ideal Candidate Profile (ICP) : We don’t just analyze job descriptions; we leverage AI to generate a data-driven profile that defines the ideal personality type, skills, and experience required for the role. One-Way Video Assessments : We streamline the first round by allowing candidates to record authentic responses on their own time, which AI evaluates against the ICP. JobFit™ Score : Every applicant receives a comprehensive score based on a 360-degree evaluation (DISC Psychometrics, Skills, Experience, and Team Score), moving beyond simple keyword matching. AI Talent Leaderboard : Instead of resume fatigue, Hyr instantly surfaces the best matches. Our AI scores and ranks applicants, allowing recruiters to focus on the top 5% immediately. Why Q as Hyr’s external partner? Q was chosen because we were the only partner offering both proven data and AI engineering expertise , not just front-end work, and the ability to act as a strategic go-to-market ally rather than a code shop. With a strong presence across Hyr’s key markets in the Middle East, Europe, and the US, Q provided a rare combination of elite technical capability and immediate strategic reach. Solution & Implementation AI Service Our team built the AI Service for Hyr to generate the Ideal Candidate Profile (ICP) and score applicants against it using Milvus, DSPy, and a RAG pipeline. It also extracts captions from interview videos, performs text summarization, and is implemented with Python/FastAPI and Celery for asynchronous processing. Backend (BE) We designed the Backend for Hyr to manage all application logic and data in PostgreSQL, including tenants, jobs, candidates, and evaluation results. It communicates asynchronously with the AI Service via message queues, exposes APIs for the Frontend, and supports a multitenant setup using PHP/Symfony, AWS S3, CloudFront, and Lambda. Frontend (FE) For Hyr, we delivered a Frontend consisting of two web apps: a Recruiter App for managing jobs and reviewing candidates, and a Candidate App for applying and completing interview steps. Both are built with React, Next.js, and TypeScript to provide a fast, reliable, and scalable user experience. Results & Impact Enable the 10x Hiring Sprint: Streamline the entire journey from initial screening to final decision-making. Stop Screening Noise: Filter out the “noise” of AI-generated resumes to focus on the top tier of qualified candidates. 360-Degree Evaluation: Build a clear picture of each applicant across skills, experience, and psychometrics. Accelerate Time-to-Fill: Eliminate time-consuming first-round live interviews and improve the quality of applicants moving to the team review stage. What Our Partner Said “We had a bold vision to stop the screening noise and find the real candidate behind the AI-generated resume, but we needed a partner who could turn that complexity into a seamless user experience. Q Agency didn’t just write code; they translated our ambitious goals into a high-performance platform that is now changing how companies hire for competence over keywords.” Dominik Soldo Founder of Hyr Next case study Developing a web platform for 10+ million users More than 10 development teams built a platform for the labor market View Case Study Partner with us WANT TO ACHIEVE SIMILAR RESULTS FOR YOUR BUSINESS? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Jenz URL: https://q.agency/case-studies/jenz/ Jenz case study: Building an internal social network that boosts employee engagement through real-time communication and mobile-first UX. Jenz | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Jenz: Internal Social Media Network for Companies Jenz Internal Social Media Network for Companies November 28, 2024 — 3 min read Live newsletter, intranet and employee engagement – all in one mobile app Team size 7 People Headquarters Croatia Industry Communication Deliverables Mobile appplication What we did Product vision, Strategy product discovery, Brand strategy / Brand identity, UX/UI, User flow, Mobile app, Data science, Dedicated team, QA automation Results Achieved 9/10 Employee satisfaction 100% Kudos & recognition 100% Anonymous surveys About the Client Jenz is a mobile app developed and verified by Q. Serving as an internal social network, it functions as the company’s live newsletter and intranet. Jenz unites people, fosters engagement, and encourages communication and feedback. It is an ideal solution for today’s remote work model, enhancing company culture and strengthening the workforce community. As such, the name “Jenz”, the phonetic transcription of the Latin word Gens, is defined as a group of people sharing the same values, goals, and lifestyle. Discovery Good internal communication is based on developing strong communication channels within the company. The Idea for Jenz was exactly that, to empower the workforce with an easy-to-use communication tool to strengthen the company culture. The process started with research and taking into account the best industry practices. By writing user journeys and stories the team was able to distinguish the right features and came up with a set that made Jenz the go-to app for employee engagement. Design The Jenz app at first glance might look like Instagram for employees, displaying photos and announcements in the feed, but Jenz’s forte is building company transparency through anonymous shoutboxes and polls. It was important to clearly distinguish the difference between just cool features and features that will contribute to the betterment of the app. The emphasis was on building a UX that is modern, slick, colorful, joyful, and visually attractive. Developing the Mobile App Originally an internal project, Q’s dedicated team approached it with a strong commitment to quality. Following workshop specifications, they began building the product using an agile approach. Flutter frontend developers and PHP backend developers created the initial MVP within four months, supported by the AVS Aurora system. After testing and implementing new features, the team continued to iterate on the product, adding further features and system enhancements. They also monitor user feedback and responses to continuously improve core functionalities. End Result Jenz is an app that unites people, creates engagement, stimulates communication, and feedback. It brings the best out of the company culture and strengthens that feeling of being connected with your work community. Jenz creates a sense of belonging, pride, and motivation among employees by uniting them into their own social universe. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Luxury Cars Dealership URL: https://q.agency/case-studies/luxury-cars-dealership/ Luxury Cars Dealership case study: Building a premium digital platform for buying and selling supercars with seamless user experience. Luxury Cars Dealership | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Luxury Car Dealership Digital Platform for Better User Experience and Performance Luxury Car Dealership Digital Platform for Better User Experience and Performance November 27, 2024 — 3 min read Designing and building a digital platform to support a premium automotive experience Team size 8 Person Headquarters US Industry Luxury sports cars dealership Deliverables New website What we did New website development, Forum platform, Machine learning (for content moderation), 3rd party coordination Results Achieved Website Brand new website with new functionalities Ecommerce Buying and selling of supercars Integration Seamless integration of several 3rd party services and tech About the Client Our client is a digital agency that works with a wide range of clients across numerous verticals, from innovative startups to global enterprises. Whether it’s a corporate website that needs to be revamped or a new product launch, our client offers its support services. In this project, they were partners with one autohorised luxury car dealership company located in US. Discovery Luxury car dealership team aimed to redefine the scope of the traditional auto dealership website by developing it into a platform where affluent automotive aficionados converge into one digital ecosystem for all their automotive needs. In addition to hosting the traditional dealer website content, the site/app is comprised of 3rd party inventory, captivating content, and a thriving online community. During the discovery phase, it was agreed that the team will operate on a two-week sprint basis through 14 sprints in total divided into Phases. Design The design and content parts were the Client’s responsibility – design and car dealership team for the content. All design changes in Figma done by the Client needed to be reported to and confirmed by the Q team. Q’s developers followed the Figma file as a reference, and the goal was to have Figma 100% aligned to the desired solution and our tasks in Jira. Development The project objective was to develop a platform where the customers could sell, consign, or even auction off their vehicles all within the same online environment. The main advantage is that the platform caters to the unique characteristics of these vehicles and their buyers/sellers. The delivery was divided into phases that were using agile development via 2-week sprints. The development team solved the challenges related to coordination and integration of 3rd party features, such as: Node BB investigation Messaging/chat functions Payments (Authorize.net) Coordination with the Salesforce team After the delivery, the project was handed over to the Q Maintenance & Support team. End result We don’t have specific metrics or analytics available, but the team did an excellent job delivering multiple features, although not all of them have been pushed to production yet. What Our Client Said “The team is consistent and reliable. Fast and consistent communication” The client CTO General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Manpower URL: https://q.agency/case-studies/manpower/ Manpower case study: Building a scalable hiring platform to streamline recruitment and improve candidate experience. Manpower | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Manpower: Digitising Global Recruitment with an Enterprise Assessment Platform Manpower Digitising Global Recruitment with an Enterprise Assessment Platform November 26, 2024 — 3 min read Data Migration and Assessment Process Digitalisation Team size 5 People Headquarters United States Industry Professional services Deliverables Responsive web app / web platform What we did Design – partially, Web app, Team scaling, Strategic support Results Achieved 100% Connection to “Concerto”, a psychometrics platform. 100% Agile approach and workflow About the Client The ManpowerGroup is a global leader in innovative workforce solutions that connect human potential with business power. Throughout their 70-year history, they have empowered the industry and addressed the complex recruitment challenges companies face today. Q partnered with Manpower Group and developed a psychological testing and assessment platform (Construct) that is being used worldwide during recruitment processes to empower end-users. Discovery Manpower’s “Construct” platform is used worldwide for recruitment purposes. The full scope of its services has not yet been utilised. During this ongoing project, a lot of thought has been put into improving the workflow process. Through continuous parallel product discovery phases and development processes , collaboration helped set user priorities and requirements. Together with the MPG team, Q guides and develops ideas, often leading the entire process and presenting the best possible platform solution. Design As part of the process, Q seamlessly migrates tens of thousands of records from the legacy system to the new platform. As soon as the migration of users from the old system is complete, Construct will become the main platform for MPG, powering the success of their end-users around the world. Development Following the Agile methodology from the project’s beginning, the team improved their game and performance. By focusing on continuous planning, testing, and integrations, the Q team was able to accomplish numerous sprints and meet every milestone goal. Through the “Construct” platform, Manpower Group transformed and powered their digital transformation and improved day-to-day activities. In order to build a user-centered product, it is important to align clients’ business objectives with end-user requirements. End Result In this case, the Q team began developing new assessments/tests/quizzes for the MPG recruitment process, developing the main feature that enables agents to send end-users direct links to existing assessments. Combining this with the MPG platform allows recruiters to focus more on the human side of their processes. What Our Client Said “Q is a very important innovation and disruptive partner for us. We are very, very happy.” Dr. Tomas Chamorro Chief Innovation Officer, Manpower Partner with us WANT TO ACHIEVE SIMILAR RESULTS FOR YOUR BUSINESS? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Medi URL: https://q.agency/case-studies/medi/ Medi case study: Building a 3D body measurement app for accurate, contactless sizing and better user experience. Medi | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Medi: 3D Body Parts Measuring App Medi 3D Body Parts Measuring App November 13, 2024 — 3 min read iOS app that sends IC body scan data to webshop and stores Team size 7 People Headquarters Germany Industry Pharma & Biotech Deliverables Mobile app, Web app What we did UX/UI design, User flow, Prototyping, Dedicated team Results Achieved 3D Scan of body parts 100% Digital transformation Improvement Faster data processing About the Client Spurred on by the joy of business challenges, Medi thrives to set industry standards with their products and concepts. By thinking beyond borders and breaking new grounds Medi found a steady partner in Q with the know-how to develop Medi Vision together. Medi’s innovative strength was honored for the first time in 2020 with the German Innovation The digital tool for practically contactless measuring was praised also by the panel of the Plus X Award in 2021 in the categories of innovation, high quality, user comfort and functionality. Discovery The idea behind developing the Medi Vision app was to relieve licensed partners and customers from a cumbersome on-site fitting process. Taking manual measurements, compiling records, and processing that data for Medi’s manufacturing needs had become outdated. Medi was well aware of their users’ specific pain points. With a specialised camera connected to an iPad, the app captures and creates a 3D model of the relevant body part, complete with precise measurements. The Q team developed an application that extracts data from these 3D camera scans, using measurements provided by Lymphatechnology. Design It was essential to deliver a streamlined user flow that would enable the design team to create an intuitive system for the entire measurement process. The Q team conducted user research and analysis to understand the complex process and identify ways to simplify it. The Q team then developed components to assemble the screens for the initial Medi Vision prototype. Among many enhancements, a larger keyboard was introduced for faster data entry and measurement recording, which proved highly effective. With this implementation, manual data entry has become much more straightforward. Users no longer need to write measurements by hand and transfer them later; instead, they can enter everything directly on their iPads. Development The tech stack for Medi Vision included two full-time native developers who built a fully functional iOS application. With this app, web stores and on-site shops can sync measurement data with their systems via API. The app collects and processes data that enables partners and customers to quickly identify the right Medi product. One particular challenge was processing the data from 3D body measurement scans. The Q team had to structure this data meaningfully so that the shop system could accurately recognize and incorporate it into orders. End Result The Q team developed an application that extracts data from camera scans of 3D body part measurements created by Lymphatechnology. While the camera captures the raw data, the Medi Vision app is essential for processing and formatting it effectively. What Our Client Said “You’re not just doing what we ask you to rather than you’re really reflecting on what we want and always exceeding the expectations in this regard.” Moritz Neise IT Manager Business & Digital Solutions, Medi GmbH “Their team asked the right questions to truly understand and clarify our needs.” Elvir Zekic Manager, Web Projects, Medi GmbH General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The Times Money Mentor URL: https://q.agency/case-studies/money-mentor/ The Times Money Mentor case study: Building a platform that simplifies financial advice and improves decision-making. The Times Money Mentor | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Money Mentor: Web Platform for Financial Support and Advice Money Mentor Web Platform for Financial Support and Advice November 21, 2024 — 2 min read Developing a custom web app for financial products reviews, financial knowledge and advice Team size 7 People Headquarters United Kingdom Industry Media, Business Deliverables Responsive web app and customized WordPress CMS Gutenberg blocks What we did Technical product discovery and Web app Results Achieved Top-notch Destination for experts 40+ Custom blocks and survey plugin 100% Access to financial products About the Client By simplifying complex financial topics , this project aimed to provide financial support and advice to a larger audience. People always appreciate money tips and tricks, whether it’s for saving for a pension, renewing auto insurance, or paying rent or mortgage. The entire concept behind Money Mentor was provided by the client. To achieve this vision, the Q team developed a custom WordPress theme, WordPress plugins, and a third-party product feed integration for Fairer Finance. Discovery The whole idea behind The Times Money Mentor came from talking to their readers and listening to their everyday challenges. It comes down to one thing: wanting to put themselves in a better financial situation in life. The main goal was to demystify money and finances in general and make the process of learning more interesting and relevant to readers. The Times team came to Q with the idea to create something new on the market, a web app that would help readers feel more confident and encourage them to make smarter decisions. Design From initial workshops and extensive research, the Money Mentors design team came up with an ideal UX & UI design for the web app. They realised that well-structured content provides a seamless user flow throughout the app. Development As part of this project, Q developed more than 40 custom blocks, and new blocks are still being developed. Blocks can be used for many purposes, from displaying surveys to displaying top-rated products to financial calculators and tools. The implementation of this solution took our team only two months, but we have been working with Money Mentor for almost three years. Throughout the life cycle of the app, we continue to improve and maintain it. End Result Money Mentor reviews hundreds of financial products, from insurance and credit cards to pensions and ISAs. Their goal is to provide users with financial knowledge and assist them in making the right financial decisions. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q AI Chatbot URL: https://q.agency/case-studies/q-ai-enterprise-chatbot/ Q AI chatbot case study: Building a flexible, secure AI chatbot for enterprise use for high-performance business needs. Q AI Chatbot | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Q AI-Powered Enterprise Chatbot Q AI-Powered Enterprise Chatbot November 29, 2024 — 3 min read A reliable, responsive, and adaptable chatbot solution that meets the needs of enterprise users. Team size 10 People Headquarters Croatia Industry IT Deliverables Web App, Mobile App, AI App, LLMOPS What we did UX/UI design, Data & AI, User flow, Prototyping, Web, Backend, LLMOPS Results Achieved Enterprise ready Chatbot Arabic first, cost effective, enterprise privacy and security On premise deployment, Customisability, No Vendor Locking About the Client This case study focuses on an internal AI product developed by Q to explore how enterprise chatbot solutions can improve access to knowledge, streamline communication, and support decision-making at scale. The goal was to design a flexible, secure, and high-performing chatbot that addresses common limitations of existing solutions, particularly around customization, usability, and integration into complex business environments. Building on its experience in delivering digital products for enterprise clients, Q approached this initiative as both a product and a research effort—combining market analysis, AI model benchmarking, and UX design to create a solution tailored to real-world business needs. The result is an enterprise-ready AI chatbot that serves as a foundation for helping organizations automate workflows, improve internal and external communication, and make faster, more informed decisions using their own data. Discovery The discovery phase included extensive market research on existing chatbot solutions and a gap analysis to uncover market limitations. We focused on building a feature set that prioritised flexibility and security. Our team developed UI/UX concepts and conducted in-depth benchmarking of AI models and vector databases to ensure the chatbot’s performance met the high standards of enterprise requirements. Design With a focus on simplicity and customisation, the design is intentionally minimalistic, making it easy for clients to tailor the chatbot to their brand and operational needs. This ensures an intuitive user experience that aligns with diverse client specifications while maintaining ease of use. Development The chatbot was developed using a tech stack of React, PHP, and Python. Our team conducted extensive data preparation and AI integration, implementing a tailored LLMOps mechanism. We designed and built the complete RAG (Retrieval-Augmented Generation) pipeline from scratch, achieving a reliable, responsive, and adaptable chatbot solution that meets the dynamic needs of enterprise users. End Result Cost-effectiveness: The chatbot leverages an optimised AI model, perfectly suited for enterprise needs, to ensure high performance while keeping operational costs low. Enterprise Privacy and Security: Built with top-tier security protocols, the chatbot ensures data privacy and compliance with enterprise-level security standards. Full Customisation: Designed to be fully customisable, the chatbot allows businesses to tailor its features and interface to fit specific organisational requirements. No Vendor Locking: Our chatbot is vendor-independent, giving clients complete ownership and flexibility without restrictive dependencies. Deploy Anywhere: With versatile deployment options, the chatbot can be seamlessly integrated into various cloud and on-premises environments. Quick to White Label: The chatbot’s adaptable design makes it quick and easy to white-label, enabling clients to brand it for a cohesive user experience. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q AI Powered Estimation Tool URL: https://q.agency/case-studies/q-ai-estimation-tool/ Q AI-powered estimation tool - case study: automated presales, backlog creation, and proposal generation, boosting speed and efficiency. Q AI Powered Estimation Tool | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Q AI Powered Estimation Tool Q AI Powered Estimation Tool November 29, 2024 — 3 min read Our in-house AI solution automates key estimation processes, reducing time and enhancing accuracy. It meets high standards for reliability and efficiency. Team size 10 People Headquarters Q Industry IT Deliverables Web App and AI Model What we did UX/UI design, Data & AI , User flow, Prototyping, Web, Backend Results Achieved Streamlined Presales process using AI, End-to-End RFP Process Automation Intelligent User Story Creation and Estimates Automated SOW and Proposal Generation About the Client This case study focuses on an internal product developed by Q to improve its own presales and project estimation processes. The goal was to address common challenges in backlog creation, effort estimation, and proposal generation by introducing a more structured, data-driven approach. By leveraging its experience in delivering complex digital products and working with enterprise clients, Q identified the need for a scalable solution that could reduce manual work, improve accuracy, and accelerate decision-making across the entire RFP and planning workflow. The result is an AI-powered estimation tool designed not only for internal use, but as a foundation for helping clients streamline their own project planning, improve efficiency, and make more informed technology and delivery decisions. Discovery Our web estimation tool was developed through an in-depth discovery process, starting with a comprehensive presales process audit to identify key pain points in backlog creation, effort estimation, and development planning. Through targeted research, we explored AI-driven automation solutions to streamline the entire workflow, from initial planning to proposal generation. With insights in hand, we crafted a user-centered UI/UX to ensure seamless, intuitive experiences, making project estimation faster, more accurate, and easily adaptable to client needs. Design Our web estimation tool features a user-friendly and minimalistic design that prioritises utility and transparency. Designed to present a comprehensive amount of data clearly and intuitively, the layout balances a clean aesthetic with functionality. This approach allows users to navigate text-heavy elements and complex backlogs effortlessly. Visual cues and streamlined sections make it easy to interpret project details at a glance, ensuring even data-dense areas remain accessible and visually engaging. The result is a tool that not only simplifies workload estimation but also supports seamless decision-making through clarity and simplicity. Development For the development of our web estimation tool, we leveraged Flutter Web as the frontend framework to deliver a responsive, high-performance interface. Supabase powers our backend, providing real-time data handling and scalability. Our in-house AI solution automates key estimation processes, reducing time and enhancing accuracy. This AI was rigorously tested and benchmarked to ensure it meets high standards for reliability and efficiency. Additionally, we integrated the tool with HubSpot and Teamwork, enabling seamless workflow alignment with existing systems and creating a cohesive experience across platforms. End Result Streamlined Backlog Generation using AI: Automatically generate a comprehensive backlog from client unstructured RFPs, ensuring all necessary user stories are captured effectively. Intelligent User Story Creation: Utilise AI to transform client requirements into detailed user stories, enhancing clarity and alignment with project goals. Effortless Estimation: Leverage historic data and knowledge to provide accurate estimations, minimising manual effort and increasing precision. Automated SOW and Proposal Generation: Instantly generate Statements of Work (SOW) and proposals, reducing turnaround time and allowing for faster client responses. End-to-End RFP Process Automation: Seamlessly automate the entire process from RFP to proposal, significantly improving efficiency and accuracy. Enhanced Decision-Making: Utilise AI insights to inform project development planning and resource allocation, ensuring optimal outcomes for your projects. User-Friendly Interface: Designed for ease of use, enabling teams to quickly adapt and integrate the tool into their existing workflows. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Sandoz URL: https://q.agency/case-studies/sandoz/ Sandoz case study: How our healthcare software development delivered a platform that enhanced supply chain efficiency. Sandoz | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Sandoz: Building a Scalable Real-Time Drug Shortage Platform for Multiple Markets Sandoz Building a Scalable Real-Time Drug Shortage Platform for Multiple Markets November 25, 2024 — 3 min read Pharma Tracking App Team size 4 People Headquarters Switzerland Industry Pharma Deliverables Web app, Admin panel What we did UX/UI design, User flow, Web app, Admin panel Results Achieved Real-time Data accuracy and reliability 100% Data synchronization 7 Markets About the Client SANDOZ is a global leader in generic pharmaceuticals and biosimilars. Biosimilars are ‘similar’ versions of a type of medicine called biologics. Sandoz is the pioneer in this area. They started the world’s first ever biosimilar development program in 1996 and were the first company to receive approval for a biosimilar in Europe, Japan, Canada and the US. The Sandoz Stockout Monitor project’s purpose is to help pharmacists have the right information at the right time, giving the right support to their patients. Q helped to develop an application that will be used mainly by pharmacists in order to receive information about drug shortages, report drug shortages, as well as to find alternatives for the drugs that are not in stock. Discovery A mini discovery phase was conducted, with a business analyst and a project manager. All business and project requirements were gathered and the backlog was created. The focus of the discovery phase was on software upgrade (backend and frontend), scope definition and estimate, as well as resource utilisation optimisation. Design The application itself did not have any defined branding and was not visually connected to Sandoz. The Q team created several suggestions for the UI direction. The aim of design is to prioritise simplicity, ensuring that all essential elements are immediately visible and effortlessly accessible. Key features such as search, filters, and drugs list are prominently displayed, allowing users to find what they need quickly and efficiently. The user interface is streamlined to minimise distractions, with intuitive navigation and a clean layout that facilitates a seamless user experience. By focusing on simplicity, we ensure that the design is not only aesthetically pleasing but also highly functional, enhancing usability and satisfaction for all users. Development Tech stack for Sandoz was 2 full-time developers that built a fully functional web application and Admin Panel built with Angular and PHP Symfony, supported by PM and Google Analytics Specialist. Q helped to develop an application that will be used mainly by pharmacists in order to receive information about drug shortages, report drug shortages, as well as to find alternatives for the drugs that are not in stock. Developing the app was challenging due to the need to connect with numerous external services, leading to a substantial data load that required constant synchronisation. Ensuring real-time data accuracy and reliability while managing diverse APIs demanded meticulous planning and a robust architecture to maintain seamless performance. Markets that are included in the project: Spain, Belgium, Italy, Germany, France, Switzerland and Czech Republic. Each user from the pharmacy that will be needing this platform will receive their link for that specific market and will have to register to see the content. End Result Q helped develop the Sandoz web application for pharmacists to receive and report drug shortages and find alternatives. The project faced challenges due to the requirement to connect with diverse external services, resulting in a considerable data load requiring continuous synchronisation. The Q team ensured real-time data accuracy and reliability and achived the main project goal. What Our Client Said “They think critically about ideas and provide excellent feedback or suggestions for improvement.” Caroline Oehri Manager Commercial & Strategic Initiatives, Sandoz Pharma. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Sela ViaRiyadh URL: https://q.agency/case-studies/sela-viariyadh/ Sela Viariyadh case study: How our smart city digital platform delivered a scalable solution, supporting premium destination management. Sela ViaRiyadh | Case Study | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Sela ViaRiyadh: Website and Mobile App for the World’s Premier Luxury Destination Sela ViaRiyadh Website and Mobile App for the World’s Premier Luxury Destination Designing and developing a great web and mobile experience for Saudi Arabia’s top luxury destination November 27, 2024 — 4 min read Designing and developing a great web and mobile experience for Saudi Arabia’s top luxury destination Team size 12 People Headquaters Riyadh, Saudi Arabia Industry Sports and events marketing /management Deliverables Mobile app, Web app What we did Discovery, UX/UI design, User flow, Partial content creation/copywriting, Development of bilingual mobile app and web Results Achieved 40K website visits before Via Riyadh opening Design Minimalistic and elegant, for a tech savvy audience Integration Indoor mapping solution for navigating the venue About the Client Sela is a leading events management company operating worldwide, based in Saudi Arabia. Via Riyadh is one of Sela’s shopping center properties that opened its door in May 2023. With a total project area of 144,000+ square meters, Via Riyadh is set to be one of the top luxury destinations in Riyadh and Saudi Arabia. Sela’s team, in collaboration with Q, worked on developing a completely new website and mobile application for Via Riyadh. The project is characterised by several high-end entertainment experiences, including fine dining restaurants, international fashion brands, and the renowned hotel chain St. Regis. The Q team was responsible for the UX/UI design, partial copywriting, frontend, backend and mobile development for the website and mobile application. Both are available in English and Arabic. Discovery The idea came from the client, and it was further analysed and defined in detail during a 2-week discovery. The main challenge was a short deadline, content creation and management, 3rd party dependencies, iOS and Android approvals, and creating a solution that can be easily upgraded/enhanced in the future. The approach was to conduct requirement elicitation workshops and Q&A sessions with the client, agree on the communication plan and responsibilities with the 3rd party providers, along with confirming the scope of requirements and implementation details (functional and design-wise). Design It was important to deliver intuitive, informative and user friendly design at the core. Via Riyadh was brand new, it’s just been launched into the market. It was fundamental that users were informed about the location, what it offered, what you could do and the experiences it offers. We based the UI/UX on educating the user in a sleek and elegant way to tie in with the luxurious brand persona. The interface design is minimal and clean with detailed accents using the brand colours. This was to allow for the new destination to gain recognition and set the stage for its launch and future prospects. Working on brand recognition is always beneficial to the client. User Experience was tailored to an audience which is very tech savvy. A user friendly website and mobile app focusing on accessibility and intuitive logic with a straightforward information architecture. The design is aesthetically pleasing and stays true to the brands personality and showcases the luxury intended for the user. Development Our tech stack for the Via Riyadh project was: 3 Flutter developers for the mobile app, 4 React developers for the website and Strapi as a CMS (Content Management System). Q developed the website and mobile app for Android and iOS which enables users to get information about the Via Riyadh venue which includes a Homepage with animation, Via Riyadh’s story, Hotel, Restaurants, Shops, Cinema, and Events pages. Both the website and the mobile app are responsive and have bilingual support for English and Arabic languages (with the direction switch for Arabic – right to left). Also, Q did integration with the MappedIn company and displayed their indoor mapping solution on the web and in the mobile app which the users can use to navigate the venue (find different shops, restaurants, etc.). End result The overall goal of the project was to deliver a simple and elegant website and mobile app that will motivate users to explore Via Riyadh, and provide all necessary information. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Smart Pension URL: https://q.agency/case-studies/smart-pension/ Smart Pension case study: How our pension platform development supported a leading UK fintech with scalable engineering teams. Smart Pension | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Smart Pension: Scaling a Leading UK Pension and Investments Platform Smart Pension Scaling a Leading UK Pension and Investments Platform November 25, 2024 — 4 min read Staff augmentation for one the of the leading UK pensions providers Team size 10 People Headquarters London, United Kingdom Industry FinTech/Pensions Deliverables Platform as a Service What we did Backend Development, Quality Assurance, Product Ownership, Dedicated/Augmented Team Results Achieved 100% Implementation of 6 different calculators CRM Implementation of CRM with mapping and management Security Sensitive financial data secured About the Client Smart Pension is a global workplace pension provider offering their clients digital-first pension and investments platform with contribution master trust. Smart’s pension platform technology offers a solution for employees and employers. Employees facing solutions – digital-first member experience makes it easy for employees to stay close to their pension data giving them control of withdrawing or adding additional funds to their pension. Employers solutions – Smart technology makes it easier for employers to set up and run their workplace pension with simple, automated ongoing processes. Smart Pension is one of the fastest-growing financial technology companies in the UK. Q has built a dedicated team of developers, QA engineers and Product Owners to help and support Smart Pension with their fast growth over the last 6 years. Engineers employed by Q have become the cornerstone of Smart’s continous efforts to revolutionise the pensions industry. Working in various teams across different verticals within Smart, they proved their worth and contributed greatly to Smart’s overall success. Discovery Reliable and senior developers are hard to find generally. That’s why Smart Pension came to Q looking for a partner. Q immediately started an immense workshop routine in Zagreb where the Head of Engineering discussed the client’s delicate setup with the team. Since they established an exceptional process of finding and hiring new talent, Q started to build a flexible and knowledgeable team covering Ruby, JavaScript and QA Automation. The team was scaled and ready before the initial deadline, following a 2-week onboarding in London where it adequately integrated with the London Smart Pension team. Design All of design was done from the client’s side. Development The development team at the height of its power consisted of 18 Ruby Engineers, 3 QA Engineers & 2 Product Owners. Due to some organisational changes within Smart, Q currently provides 10 Engineers to work on the projects. Handling sensitive financial data is something that isn’t lightly taken into account. Q secured all the necessary equipment, including the security lock and security camera for the Smart Pension team. Q teams are mostly responsible for charging the engine. This is a complex machine implemented in Ruby with the usage of sidekiq. Some of the main responsibilities of charging the engine are: Fetch eligible employees and employers Calculate fees Disinvest money deducted by fees from employees’ and employers’ accounts Provide reporting and configuration options for CRM users All of these actions are executed for millions of employees which provides an intricate and significant challenge for Q due to performance complexity. End Result The features implemented by Q are: Implementation of CRM with the following functionalities like Mapping and management for charge configs to employers, fees management, employees management Implementation of AUM Fee calculator Implementation of Regulatory Fee calculator Implementation of Contribution Fee calculator Implementation of Flat Fee calculator Implementation of Policy Fee calculator Implementation of Transfer In Fee calculator Testing fee calculators on a big amount of data Improvements for Calastone integration Improvements for Gocardless integration Introducing retry mechanism for payments Moving monolith parts of charging engine to microservice Bulk import for employers charge obligations and adviser exclusions What Our Client Said “Q engineers are among our best. We really do think of you guys as part of the Smart team, and we’ve done some great work together, and I think this is reflected in the high retention rate as well. We’ve seen that your team is aligned with us, and we’re looking forward to doing more with them and doing more business with Q as well.” Brian Tamburello Senior Director Of Engineering, Smart Pension Video Link General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Spartan Race URL: https://q.agency/case-studies/spartan-race/ Spartan Race case study: How our technology due diligence service unlocked eliminated vulnerabilities and reduced costs by 32%. Spartan Race | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Spartan Race: Eliminating Vulnerabilities and Reducing Cost by 32% Spartan Race Eliminating Vulnerabilities and Reducing Cost by 32% June 12, 2025 — 4 min read How Q’s technology due diligence unlocked risks and discovered opportunities for the world’s largest obstacle course race Team size 10 People Headquarters United States Industry Sports Deliverables Technology due diligence report and recommendations What we did Assessment of the key technical and business domains: Project Management, Quality Assurance, Frontend, Backend and DevOps Results Achieved 32% Cost reduction in AWS infrastructure 47% Improvement in deployment speed 2 x Faster project delivery About the Client Spartan Race is the world’s most popular obstacle course race and endurance brand. It gathers a community of millions enthusiasts around the globe, hosting over 250 events annually across more than 40 countries. As their global footprint continuously grows, so does the need to strengthen the digital infrastructure supporting it. Recognizing this, they partnered with Q to run an in-depth Spartan technology due diligence assessment. Spartan race case study show how we ensured their digital platforms are secure, scalable, and ready to support future innovation and expansion. Project Management Our assessment identified opportunities to significantly improve delivery efficiency through enhanced planning and clearer role definitions. By introducing core planning frameworks and optimized team structure, we recommended a shift in the Project Management approach – from basic maintenance to product excellence, which will enable faster execution, better alignment, and long-term scalability and growth. Backend Q technical due diligence detected key backend challenges affecting stability, security, delivery speed, and overall maintainability. We provided actionable recommendations to reduce technical debt, strengthen security posture, and improve code maintainability, laying the groundwork for more reliable performance and faster development cycles. Frontend The frontend codebase also showed a high degree of technical debt, including code duplication and other code quality issues, which impact the speed of delivering new features, time to market, and overall product reliability. They also increase the risk of bugs, raise maintenance costs, and slow down future development efforts. Within our recommendations, we outlined a path to improve agility, reduce risk, and better position the product for scalable growth. DevOps The DevOps analysis identified several critical gaps requiring immediate attention. We recommended security posture enhancement, CI/CD process optimization, monitoring and alerting framework development, DevOps practice implementation, and disaster recovery planning and validation. Following the implementation of our recommendations, Spartan saw a 32% reduction in AWS infrastructure costs, significantly improving overall efficiency Quality Assurance Among all assessed areas, QA function showed the least critical risk, but still presented room for improvement. We identified the absence of standardized QA processes as the main pain point, because it reduces consistency and scalability and limits the organization’s ability to ensure a high-quality user experience. Strengthening this area is key to reducing manual effort and improving reliability. We also introduced automation which will additionally increase the organization’s opportunity for product and team scaling. End Result Spartan technology due diligence project resulted in a comprehensive and actionable report that highlighted areas of risk and opportunity . The report also outlined a path forward — practical short term and long term roadmaps, by simultaneously identifying gaps and pointing out improvements that are aligned with the organization’s broader strategic goals. The assessment also uncovered significant opportunities to reduce costs, particularly through optimizing AWS infrastructure. Last but not least, the analysis outlined what it will take to shift from a reactive, maintenance-heavy approach to one that supports product excellence and sustainable growth. The success of the tech due diligence project built a strong foundation of trust and alignment between Spartan and Q, leading Spartan to continue partnering with us. Following the assessment recommendations, we have now moved to hands-on development. What Our Client Said “The Q team are technical gladiators — smart, relentless, and precise. They move fast, think ten steps ahead, and they care as much about the mission as we do. We’re building things together now that will transform how people connect with Spartan. And we’re just getting started.” Joe De Sena CEO and founder of Spartan General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Stepathlon URL: https://q.agency/case-studies/stepathlon/ Stepathlon case study: A scalable virtual fitness platform with mobile and web apps, boosting engagement and enabling gamified wellness. Stepathlon | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Stepathlon: Virtual Fitness Platform Stepathlon Virtual Fitness Platform November 29, 2024 — 4 min read Turnkey digital solution with a mobile and web application Team size 5 People Headquarters United Kingdom Industry SportsTech Deliverables Mobile app, Web app, Backend What we did UX/UI design, User flow, Node.js, React, and, Flutter development, DevOps, Dedicated development team Results Achieved 3x User engagement increase New features Chat, quizzes, activities, customization, badges Integration InCrowd, LiveLike, Terra, AWS, Google Analytics About the Client Stepathlon is a virtual fitness platform that offers inclusive challenges for participants of all ages, genders, locations, and physical abilities. By taking steps and engaging in other wellness activities, participants move around a customised virtual course, earning points and engaging with a community. This platform provides a valuable tool for brands and rightsholders to connect with their fans and consumers, offering a turnkey solution for continuous engagement. Stepathlon collects ethical and actionable data on participants, allowing for deeper insights and increased customer lifetime value. The platform’s global market potential extends beyond sports to areas like music, film, fashion, arts, culture, and entertainment. Additionally, Stepathlon generates revenue through challenge fees, sponsorship fees, and data-driven revenue. Discovery The Q team was brought in to help redevelop Stepathlon’s entire technology and product stack. During the discovery process the Q team helped distil clear user requirements, development milestones and a high level solution design, which was later used as the blueprint for development. In the development phase, Q’s programmers were responsible for delivering a scalable solution in the format of web application, mobile application and a solution integrated into existing native apps via an SDK. Design Stepathlon’s white-label app for corporates and sports clubs needed an intuitive design to engage both employees and fans through its “Virtual Race” platform. We crafted a seamless user experience for key features like a multi-section homepage, community page, racemaps, and leaderboards, ensuring smooth navigation and interaction. To enhance engagement, we integrated friends chat, contests, daily quizzes, and profile customisation, all designed with best UX practices and insights from user research. Using Figma, we built a scalable design system to maintain consistency across devices. We focused on extensive research, wireframing, and prototyping to refine each feature and interaction. This iterative process helped us create a well-structured, user-centered design that met the client’s goals effectively. Development The primary objective was to deliver a customisable app designed to gamify user activity and reward users for engaging within the community. Users can participate in daily activities and contests to earn points, with the potential to win prizes. The development of the project followed a two-week sprint cycle, adhering to an agile methodology to ensure efficient iteration and feedback. One of the most challenging aspects of the development process was integration with Terra, a third-party system that provided data on users’ physical activity, such as steps and activity minutes, from fitness trackers like Fitbit. The team developed a system to match users’ activities with their selected goals, and when certain milestones were achieved, trigger reward actions. These rewards were then processed through another third-party system, LiveLike, which updated the leaderboards and reflected user rankings in real-time. This complex integration required significant coordination between systems to ensure accurate tracking and rewarding, creating a seamless experience for the users. Terra LiveLike Activity Tracking User Engagement Gamification End Result By launching the new platform we saw a three-time increase in user engagement compared to the old platform. What Our Client Said “They’re well-versed and competent in their areas of expertise.” Remy Becher CPO & CTO, Stepathlon Lifestyle UK We’ve made Q Business Talks with CPO & CTO, at Stepathlon Video Link Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Subsea7 URL: https://q.agency/case-studies/subsea7/ Subsea7 case study: A custom digital solution for offshore operations that streamlines logistics and improves data visibility. Subsea7 | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Subsea7: Digital Transformation Of The Leading Global Supplier In The Energy Industry Subsea7 Digital Transformation Of The Leading Global Supplier In The Energy Industry November 22, 2024 — 4 min read Custom software for planning, supporting, and executing logistical operations Team size 28 People Headquarters United Kingdom Industry Engineering Deliverables Web app What we did Backend development, Frontend development, UX/UI design, QA, Prototyping, Dedicated team Results Achieved 100% Data collection through onshore application Custom project management application Streamlined equipment transportation system, budget estimation and task assignments About the Client Subsea7 is a global leader in the delivery of offshore projects and services for the evolving energy industry. Headquartered in London, UK, the company specialises in engineering, construction, and project management services for the offshore energy sector. They operate in various regions around the world, providing integrated solutions for the installation and maintenance of subsea infrastructure. Subsea7’s expertise spans across the oil and gas, renewable energy, and emerging markets, positioning it as a crucial player in the energy transition towards more sustainable and low-carbon solutions. One of Subsea7’s key strengths lies in its extensive fleet of specialised vessels, which enable the company to undertake complex and large-scale projects in challenging offshore environments. These vessels are equipped with technologies for pipe-laying, heavy lifting, and subsea construction, ensuring precise and efficient execution of projects. The company’s engineering capabilities are further supported by its research and development facilities, where solutions are developed to meet the unique demands of the offshore industry. Discovery During the discovery phase, we have gathered detailed requirements from stakeholders to understand their vision, target audience, and key functionalities. This phase included meetings, surveys, and research to ensure we had a comprehensive understanding of the project’s goals. Design We have developed a visual style guide to maintain consistency across all pages and elements. This guide included: A color scheme that conveys the brand’s message and is accessible. A modern, legible typography with clear hierarchy. Clean, vector-based icons that enhance usability without cluttering the interface. The result was a modern, responsive, and clean design that not only looked visually appealing but also provided an excellent user experience. By following best practices and keeping the user at the center of the design process, we achieved a design that was both functional and aesthetically pleasing. Development Applications that are being developed are primarily intended for planning, supporting, and executing various logistical operations, as well as managing human and material resources. Regarding preferred technologies, the fantastic four are mainly used: Angular, .NET, MS SQL, and Azure. Application development follows agile principles. A significant emphasis is placed on clean architecture as a set of good practices ensuring that projects are comprehensible, maintainable, testable, and scalable. The challenges of developing applications in this industry are numerous. Considering that it is a large, multinational company using various systems and tools, it is necessary to ensure stable data exchange between them. Therefore, a significant focus is on data import and export, ensuring consistency and integrity. Such challenges are understandable to anyone who has dealt with large datasets. The complexity of these processes varies from relatively simple import and export using Excel and CSV files to much more complex processing in tools like Databricks. Another issue that can threaten data consistency and integrity is the fact that work on applications often occurs in conditions of weak or no internet availability. Therefore, it is crucial to ensure data storage when the system is offline and synchronisation when the internet becomes available again. End Result An onshore application for entering the ship log data (environmental conditions, marine consumables, log of events, people on board, etc.) that runs on vessels, and a central onshore application collecting said data, collating it, and displaying various dashboards and data, from individual daily reports from the ships, to monitoring of various data trends over time, or across individual projects the ships are engaged in. There is also a project management application, defining various checklists that serve as templates for tasks that every project needs to complete, as well as tracking the individual state of the completion of those checklists per-project, assigning individual tasks to users, and allowing comments and discussion on those tasks. Other applications include an equipment transportation system to streamline every aspect of the logistical process, and also a system for streamlining and speeding up the process of project budget estimation and resource task assignments. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The Sun URL: https://q.agency/case-studies/the-sun/ The Sun case study: Scaling a high-traffic media platform to improve performance, stability, and user experience. The Sun | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > The Sun: Engineering a High-Traffic Digital Platform for 30+ Million Readers The Sun Engineering a High-Traffic Digital Platform for 30+ Million Readers November 26, 2024 — 3 min read Enhancing the services of a highly complex digital system Team size 16 People Headquarters United Kingdom Industry Media Deliverables Mobile app, Web app What we did UX/UI design, Full-Stack Development, Business Analysis, Quality Assurance, Leading Teams About the Client The Sun is one of the largest newsbrands in Britain, reaching more than 30 million people monthly. Our team collaborates with The Sun’s in-house experts in an ongoing augmented capacity, supporting both their business-as-usual (BAU) tasks and various strategic projects. This partnership ensures we deliver seamless and innovative solutions that enhance their digital presence and operations. Design Designers at The Sun focus on creating an engaging and intuitive user experience. They develop modular components for a cohesive and visually appealing interface. Enhancements include a simplified navigation bar, customisable dashboards, and a streamlined chat interface for real-time communication. These design elements prioritise ease of use, allowing users to connect, play, and socialise effortlessly. The design approach ensures that users have an enjoyable and immersive experience. The team’s work fosters a vibrant gaming environment that supports user engagement and satisfaction. Development At The Sun, our developers work closely with product managers and stakeholders to understand project requirements in depth. They all together create wireframes and prototypes to visualise user experiences before coding begins. The developers manage and work on enhancing a magnitude of different services, all coming together into a highly complex system spanning from WordPress, a custom NodeJS server-side rendering tool, to React on the frontend with multiple caching layers delivering lightning-fast content to millions of readers. In back-end development, they manage databases, build REST API endpoints and GraphQL APIs, and ensure secure data transactions. AWS services are integrated to handle authentication, data storage, and analytics, ensuring scalability and reliability. Terraform automates infrastructure provisioning, while CircleCI facilitates continuous integration and deployment. Developers continuously monitor performance, conduct maintenance, and implement updates based on user feedback, ensuring a robust platform. Testing is also a large part of the development process, and our developers create rock-solid test suites across a plethora of tools, such as Jest, Cypress, Percy, Chromatic, Storybook, and more. Business Analysis Business analysts at The Sun engage with stakeholders to understand the company’s goals and objectives. They identify key performance indicators (KPIs) to measure the platform’s success and ensure that product development aligns with strategic goals. Analysts create functional specifications to guide developers on required features and functionalities. They bridge the gap between technical teams and business needs, ensuring that development efforts meet user expectations. By tracking progress and assessing performance metrics, analysts provide insights for continuous improvement. Their role supports both daily operations and strategic initiatives, ensuring the platform delivers ongoing value. Quality Assurance The QA team at The Sun is dedicated to maintaining high standards of quality and reliability for the platform. They perform extensive testing, including unit, integration, and user acceptance tests, to identify and resolve issues before release. Automated testing and monitoring tools enhance efficiency and accuracy. QA specialists collaborate with developers to address problems, ensuring a smooth and functional user experience. Regular updates and maintenance keep the platform secure and up-to-date. Their efforts are essential in preventing downtime and ensuring consistent performance, contributing to overall user satisfaction. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Times Travel URL: https://q.agency/case-studies/times-travel/ The Times Travel case study: A scalable travel platform that combines expert content and seamless UX to boost engagement and revenue. Times Travel | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Times Travel: Custom Web Platform for Travel Enthusiasts Times Travel Custom Web Platform for Travel Enthusiasts November 21, 2024 — 2 min read Traffic and revenue growth through collaboration Team size 11 People Headquarters United Kingdom Industry Travel Deliverables Web application What we did Team augmentation/dedicated team, QA automation Results Achieved 15% Revenue growth 5+ Custom building blocks 100% Integration with the third party About the Client Everyone’s heard about The Times. Along with Sunday Times and The Sun, they are one of the oldest newspapers in Britain. NewsUK, the largest British publishing house, partnered with Q to create an end-to-end platform that merges travel experiences with expert insights. The result is The Times Travel, a unique digital platform driven by an unquenchable passion for travel. It combines the experience, knowledge, and guidance of leading experts from The Times and The Sunday Times. Discovery In collaboration with Q, The Times Travel created a new web app that provides travellers with a diverse perspective on traveling. It took us 6 months to implement UX and UI design, develop custom WordPress themes, optimise SEO and build the overall web infrastructure. Design It all started with a week-long design sprint with the Q team to comprehend the business objectives, share the knowledge acquired on our previous travel-related projects, and specify what will be developed as an MVP. The Times Travel design team provided support in defining user stories and developing the exemplary UX and UI of the web application. Creating a seamless and intuitive user flow required a great deal of content structure. Development & Product Features Through a lean and agile approach, the Q team managed to create an MVP in less than 6 months. Since the launch of the platform, a dedicated team of experts has continuously improved the web application based on user feedback. End Result With the combined strengths of both teams’ expertise in travel, journalism, technology, and reach to potential customers, users can now engage with a custom and unique travel platform. This will enable them to explore the world like never before. What Our Client Said “I’m really enjoying working with an Agency with a similar culture to ourselves, who strives to work hard and play hard, and achieve the best outcomes for their clients.” Rai Eastham Head of Engineering, The Times “They’re always able to come up with not only a quick solution but a clever solution.” Lana Went Business Analyst & Delivery Lead, News UK General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Waterbear URL: https://q.agency/case-studies/waterbear/ Waterbear case study: Transforming a streaming platform into a scalable digital product, enhancing discovery and environmental action. Waterbear | Case Studies | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Waterbear: Transforming the Web and Mobile Apps Waterbear Transforming the Web and Mobile Apps November 29, 2024 — 4 min read Upgrading and enhancing Waterbear digital platform Team size 10 People Headquarters Netherlands Industry Digital Deliverables Mobile app ( App Store , Google Play ), Web app What we did UX/UI design, User flow, Prototyping, Dedicated team Results Achieved Home Feed Personalized articles, events, videos and missions Updated profiles Achievement tracking, improved search and filtering Enhanced community interaction Awareness promotion, participation in social and environmental causes About the Client Waterbear is a platform for environmental themed videos and content bringing their audience to concrete actions. The intention is to make Waterbear a platform where people that care about the planet learn, engage, contribute content and mobilize others to save the planet. Waterbear encourages its community to switch from mindless scrolling and engage with entertaining films that cover a wide range of topics in the environmental and humanitarian space. They work alongside hundreds of partners commited to saving our planet, including both renowned brands and NGOs. Together, they produce original content that inspires people to take action by making it effortlessly easy. It’s about all of us, and the planet, together. Discovery The main idea behind the Discovery phase is that the Q project team gets familiar with all planned functionalities and enhancements. Q’s BA has produced a backlog document that has a list of the functionalities, where we focused on the ones planned for the next 3-4 months. For the second half of the Dedicated team contracted period, a smaller team was scheduled (with one React JS and one Flutter developer), the scope will be aligned on and revised mutually along the way. Q’s designer has created the desktop and tablet screens for the mobile screens shared upfront, created by Move78. Based on the information mentiond above, Q web and mobile developers have given time estimates needed to implement the required functionalities. They will use Flutter for Android and iOS for compatible mobile applications. ReactJS will be used for the website. Design The design – desktop screens – were done by Move78 agency. Q’s designer has created the screens for the mobile app. After that, our developers have used all of them to create the upgraded platform. Development In the development phase, the scope includes significant enhancements to the Waterbear platform designed to improve user experience. The updated Home Feed will deliver personalized content, such as articles, events, videos, and missions tailored to individual interests. A new Discover Page will allow users to explore content based on specific goals, whether to get informed or involved, through a variety of content types or topics. The Get Informed Feed will feature curated films and articles to enhance knowledge, while the Get Involved Feed will highlight opportunities for community engagement. Users can expect diverse content types, ensuring they can access articles, videos, and missions in formats that best suit their preferences. To foster community interaction, a new comment function will facilitate meaningful discussions among users. Additionally, user profiles will be updated to reflect individual interests, achievements, and progress, enabling better tracking of personal journeys. Enhanced search functionality and filtering options will streamline content discovery, making it easier to locate relevant material. The platform will also introduce updated like and share options for easy saving and sharing of favourite content. These updates collectively aim to create a more engaging and user-friendly platform, encouraging exploration and participation in initiatives aligned with users’ values and interests. End Result The enhancements to the Waterbear platform have significantly improved user experience and engagement. Users now enjoy a personalized Home Feed that delivers tailored content, fostering deeper engagement with relevant articles, videos, and events. The Discover Page encourages exploration beyond typical preferences, promoting awareness of important issues and participation in social and environmental causes. Enhanced community interaction through the new comment functionality has strengthened connections between users. The updated profiles allow users to track their achievements, while improved search and filtering options streamline content discovery. Overall, these changes position Waterbear as a more dynamic, user-centric platform, driving greater engagement and alignment with users’ values. What Our Client Said It’s been a real pleasure working with Q. I’ve spoken with all of the team at Waterbear, and they only have fantastic things to say about the whole Q team.” Sam Sutaria CEO, Waterbear “I’m impressed with how they pivot with us as our priorities shift.” Jonny Siskind VP of Business Operations, Waterbear General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Tech & Software Engineering Careers URL: https://q.agency/careers/ Explore careers at Q. Work on global products, grow with experienced teams, and build your career in a collaborative environment. Tech & Software Engineering Careers | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers Serious Business, Playful spirit Work from wherever with a team of smart, driven individuals. Build cool things. Be yourself and learn something new every day. Q snapshot Not the full story, but enough to give you a pretty good idea of who we are. +65% Senior Experts 9.3/10 Client Satisfaction Rate 300+ IT Professionals 4.8/5 Clutch Score with 30+ reviews 2000+ Talent Pool Across 5 Countries 4x Voted Croatia’s Best Employer What you get WHEN you join us Remote First Company Work in pajamas, join meetings in style — flexibility is part of our DNA. You can work from wherever inspires you: your home, a café, or somewhere by the sea. We trust people to find what works best for them. Work-life Balance & Health We take well-being seriously, not just as a phrase, but in practice. Additional & supplementary health insurance 100% paid sick leave New moms: first month part-time with full pay MultiSport card discounts Wellbeing day + 3 psychotherapy sessions per year Financial Comforts We believe in celebrating life’s moments and providing a little extra support. Rent, transportation & meal coverage Third pillar retirement savings Seasonal rewards – Christmas & summer bonus Family-friendly gifts for your little ones Kindergarten tuition support Referral rewards Your Growth journey Growth looks different for everyone. That’s why we offer a mix of mentorship, education, hands-on experience, and honest feedback so you can develop your skills, shape your career path, and grow into the role you want. Education, Workshops & Networking Through workshops, courses, conferences, certifications, and mentorship, we support both your professional and personal growth. From technical skills to communication, feedback, and self-awareness — learning here is continuous and practical. We also stay closely connected to the tech community through meetups, conferences, and various events, creating space for knowledge sharing, networking, and fresh perspectives. And yes, there’s more Of course, there’s more. Quarterly budgets for mini team building activities Milestone anniversaries with Loyalty awards Global travel opportunities: business trips across 20 countries Extra vacation days Hiring process Getting to know Q A relaxed 30-minute intro call with one of our Talent Acquisition Specialists. We’ll get to know you, your experience, and what you’re looking for, and you’ll get a feel for who we are and what we’re building. Evaluation* Depending on the role, this step may include a take-home assignment tailored to your expertise, nothing generic, just something that reflects real work. Q Tech Call A deeper dive into your technical knowledge with an Engineering Lead or Senior Engineer. Think of it as a conversation, not an interrogation. Client evaluation* Since we work closely with our clients, they’re part of the process too. This step usually includes one or two conversations directly with them. Feedback Feedback is an integral part of our culture. You’ll get clear, honest feedback at every stage, no matter the outcome. *Depending on the selection process, you may either be assigned a task or proceed directly to the client evaluation call. Testimonials 1/3 Manager of Data Science Excellence Petar “At Q, I’ve had the chance to grow through a variety of projects that keep pushing my skills forward. The team is friendly and collaborative, so it’s easy to feel like you belong. I also really enjoy working with up-to-date technologies that keep things interesting and relevant.” LinkedIn Email PHP Engineer Monika “Working here for 8+ years, no two projects have ever felt the same. From healthcare to transport, I’ve built strong domain knowledge across industries. The dynamic nature of agency work keeps you learning, while the opportunity to grow beyond your role and the flexibility to work from anywhere make it a great place to develop.” LinkedIn Email Engineering Lead Ivan “It has been 4 years since I joined Q and they have flown by. I have met some good people and made some lifelong friendships. Despite some challenging projects, I’m still just as motivated to show up for a morning coffee as I was on day one. And even though Q is remote-first, you’ll still find me in the office, I guess I’m just old school.” LinkedIn Email Recognised as the Best Employer 4 times This recognition comes directly from our people, which makes it the one we value the most. Open positIons Senior Full Stack Engineer BiH , Croatia , Serbia Apply Now : Senior Full Stack Engineer Data Engineer (Mid/Senior) BiH , Croatia , Remote , Serbia Apply Now : Data Engineer (Mid/Senior) Key Account Manager Croatia , Hybrid Apply Now : Key Account Manager Senior AI Solution Architect (Expression of Interest) BiH , Croatia , Remote , Serbia Apply Now : Senior AI Solution Architect (Expression of Interest) Frontend Engineer (Expression of Interest) Croatia , Remote Apply Now : Frontend Engineer (Expression of Interest) Full Stack Engineer (Expression of Interest) Croatia , Remote Apply Now : Full Stack Engineer (Expression of Interest) Open Application Croatia , Hybrid , Remote Apply Now : Open Application Partner with us Let’s build something great togetheR Contact us FAQ DO YOU OFFER REMOTE WORKING? Q is a remote-first company. However, we also have an office located in Zagreb, where all employees are welcome. Ultimately, you are free to choose your preferred working arrangement, whether it’s on-site, fully remote, or hybrid. IS THERE AN OPPORTUNITY TO SWITCH BETWEEN PROJECTS? Yes! While many of our projects are long-term, we understand that, at times, a project change is necessary to improve motivation and foster growth in new areas. WHAT HAPPENS IF MY PROJECT ENDS? If your project ends, you will be reassigned to a new project as soon as possible. If it happens that you have some time between projects, we usually assign you to an internal project to improve your skillset. DO YOU WORK WITH THE LATEST TECHNOLOGIES? We strive to incorporate the latest technologies into our projects. However, we ensure that all technologies are thoroughly researched and vetted before implementation to guarantee their suitability. WHAT’S NEXT AFTER A SENIOR ROLE? Senior employees can pursue two paths — the Principal role, focusing on tech expertise and strategic development, or the Center of Excellence role, emphasising innovation, client engagement, and mentorship. Leadership roles are also an option. General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Data Engineer (Mid/Senior) - Tech Consulting and Software Engineering URL: https://q.agency/careers/data-engineer-mid-senior/ Are you a proactive, team-oriented, and motivated Data Engineer (Mid or Senior) looking for your next challenge? If you enjoy building robust, high-throughput data platforms, optimizing complex pipelines under heavy load, and working with cutting-edge technologies—including GenAI and modern lakehouse architectures—we'd love to have you on board! Data Engineer (Mid/Senior) | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers > Data Engineer (Mid/Senior) Data Engineer (Mid/Senior) BiH , Croatia , Remote , Serbia Are you a proactive, team-oriented, and motivated Data Engineer (Mid or Senior) looking for your next challenge? If you enjoy building robust, high-throughput data platforms, optimizing complex pipelines under heavy load, and working with cutting-edge technologies—including GenAI and modern lakehouse architectures—we’d love to have you on board! Your role You will build and operate our client’s data platform end-to-end, covering data ingestion, warehousing, lakehouse architecture, and platform operations. Your primary focus will be designing and operating high-volume ingestion into ClickHouse from Kafka, BigQuery, Elasticsearch, cold storage, and third-party APIs. Beyond ingestion, you’ll contribute to data modeling, pipeline development, data quality, observability, and platform reliability across the entire data stack. As a Mid-level Data Engineer, you’ll independently deliver well-defined pipelines with light guidance. As a Senior Data Engineer, you’ll own platform subsystems end-to-end, define engineering best practices, mentor teammates, and drive architectural decisions. Tech stack Core technologies ClickHouse Kafka BigQuery Python Elasticsearch Storage & Infrastructure Amazon S3 / Google Cloud Storage (GCS) Kubernetes (EKS) Data formats & Lakehouse Parquet Apache Iceberg Nice to have TypeScript / Node.js dbt Change Data Capture (CDC) tooling Modern lakehouse architectures Production ML/LLM pipelines Vector databases, embedding infrastructure, or RAG Experience shipping GenAI-powered features Experience in media, ad-tech, or subscription-based businesses What we expect Building data platforms Experience designing, building, and operating production data pipelines at scale—not just using existing platforms. Experience ingesting data from analytical databases, search systems, cloud storage, and third-party APIs. Strong Python skills for developing production-grade data pipelines. ClickHouse & Kafka Strong understanding of ClickHouse storage engines, primary and sorting key design, materialized views, and performance optimization. Experience designing idempotent ingestion pipelines, handling deduplication, and troubleshooting production workloads. Solid understanding of Kafka delivery semantics, schema registries, and backpressure management. Engineering excellence Experience integrating third-party APIs, including authentication, pagination, rate limiting, retries, error handling, and incremental data loading. Experience building reliable, observable, and maintainable data systems with a focus on monitoring, reliability, and operational excellence. Ways of working Comfortable using AI-assisted development tools (e.g. Claude Code, Cursor, GitHub Copilot) as part of your daily engineering workflow. Strong communication skills and the ability to work independently while collaborating effectively within a team. What we offer Choose the way you work: remote, hybrid, or on-site (Croatia, Serbia, or Bosnia and Herzegovina) Flexible working hours Opportunity to work with modern technologies in a high-performance environment Diverse international projects Active IT community involvement through meetups, workshops, and technical articles Internal workshops and continuous professional development 100% paid sick leave Private health insurance Multisport/PassSport card subsidy Transportation allowance Meal allowance Salary range Our compensation is based on your experience, technical expertise, and interview performance. Mid-level Data Engineer: up to 3600€ gross 1 Senior-level Data Engineer: up to 5000€ gross 1 Sounds like your next challenge? Click the button below and apply now! 😊 Apply now General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Frontend Engineer (Expression of Interest) - Tech Consulting and Software Engineering URL: https://q.agency/careers/frontend-engineer-expression-of-interest/ Are you a proactive, team-oriented, and motivated Frontend Engineer looking for your next challenge? We’re always on the lookout for passionate individuals who share our values and are excited to make an impact. We value a go-getter attitude, a drive to get things done, and the empathy to truly understand our clients’ needs. Our team […] Frontend Engineer (Expression of Interest) | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers > Frontend Engineer (Expression of Interest) Frontend Engineer (Expression of Interest) Croatia , Remote Are you a proactive, team-oriented, and motivated Frontend Engineer looking for your next challenge? We’re always on the lookout for passionate individuals who share our values and are excited to make an impact. We value a go-getter attitude, a drive to get things done, and the empathy to truly understand our clients’ needs. Our team takes pride in working hard—and having fun while doing it. We believe in the power of collaboration and bringing like-minded people together to build great things. If this sounds like you, we’d love to hear from you! Submit your expression of interest and we’ll be in touch when the right opportunity arises. Your role Communication & coordination with partners and clients Participation in planning and evaluation Participation in the architecture and design of the application Participation in auditing and analysis of project documentation and specifications Planning and setting the project core from scratch Maintaining ongoing projects Making and maintaining reusable components Working closely with other divisions like backend and design to create the best UX Driving an agile development process with your project team. Experience we’re looking for More than 5 years of experience in developing with JavaScript, mostly in the web environment Great knowledge of JavaScript and some common transpiler, like Typescript (which we use) Great knowledge of React and its advanced concepts like Context API, HOC, Render props, Compound components etc Great knowledge of both functional and reactive programming (asynchronous programming, queuing, caching, currying, recursiveness…) Experience working with API-based applications (REST and/or GraphQL) Ability to handle the entire development life cycle from end to end Strong understanding and experience working with web development architectures and patterns (Flux, CQRS, Event Sourcing, MVC, Microservices…) Experience with code reviews to enforce good coding practices Leadership material and guidance for other developers High proficiency in English in both written and verbal form And it would be awesome if you Have great code testing experience (preferably with Jest) Have great continuous deployment skills What we bring to the table The location choice is yours: remote, on-site or hybrid Flexible working hours Work with new technologies in a high-performance environment IT community involvement — Meetups, Workshops & Articles Internal workshops & personal development Educational budget 100% paid sick leave Paid health insurance Subvention of Multisport card Transport allowance & meal allowance Salary range Our salaries are based on your experience, level of knowledge & technical interview. We will contact only the candidates who are the best fit for the current project or for a project that will be active in the coming months. Sounds exciting? Click on the button below and apply now 🙂 Apply now General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Full Stack Engineer (Expression of Interest) - Tech Consulting and Software Engineering URL: https://q.agency/careers/full-stack-engineer-expression-of-interest/ Are you a proactive, team-oriented, and motivated Full Stack Engineer looking for your next challenge? We’re always on the lookout for passionate individuals who share our values and are excited to make an impact. We value a go-getter attitude, a drive to get things done, and the empathy to truly understand our clients’ needs. Our […] Full Stack Engineer (Expression of Interest) | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers > Full Stack Engineer (Expression of Interest) Full Stack Engineer (Expression of Interest) Croatia , Remote Are you a proactive, team-oriented, and motivated Full Stack Engineer looking for your next challenge? We’re always on the lookout for passionate individuals who share our values and are excited to make an impact. We value a go-getter attitude, a drive to get things done, and the empathy to truly understand our clients’ needs. Our team takes pride in working hard – and having fun while doing it. We believe in the power of collaboration and bringing like-minded people together to build great things. If this sounds like you, we’d love to hear from you! Submit your expression of interest and we’ll be in touch when the right opportunity arises. Your role Communication & coordination with colleagues and clients Participation in sprint planning and task evaluations Participation in the architecture and design of the application Participation in auditing and analysis of project documentation and specifications Planning and setting the project from scratch Maintaining ongoing projects Making and maintaining reusable components Working closely with other divisions like backend and design to create the best DX and UX Driving an agile development process with your project team Experience we’re looking for More than 4 years of experience in developing with JavaScript, mostly in the web environment (HTML/JSX, (S)CSS) At least 4 years of experience as a Node.js developer Understanding the nature of asynchronous programming Good knowledge of REST principles Strong understanding and experience working with web development architectures and patterns (Layered Architecture, Microservices…) Meaningful experience with SEO optimisation Extensive experience in developing complex web applications using React.js and its advanced concepts like Context API, HOC, Render props, Compound components etc., as well as knowledge of 3rd party state management libraries. Great knowledge of JavaScript and some common transpiler, like Typescript (which we use) Great knowledge of object-oriented, functional, and reactive programming (asynchronous programming, queuing, caching, currying, recursiveness…) Experience developing and working with API-based applications (REST and/or GraphQL) Ability to handle the entire development life cycle from start to end Strong understanding and experience working with web development architectures and patterns (SSR/SSG, SOA, Serverless…) Experience with code reviews to enforce good coding practices Strong problem-solving and debugging skills High proficiency in English in both written and verbal form And it would be awesome if you Have excellent communication skills in written and verbal form Have great code testing experience (like Jest and/or Cypress) Have great continuous deployment skills (like GitHub + GitHub Actions) Have great knowledge of infrastructure management: Terraform/IaC AWS (basics, getting around the interface, reading errors, reading monitoring dashboard, etc) AWS Amplify (Next.js hosting) AWS Event Bridge (message bus system) Have great experience with 3rd party identity providers (like Auth0 or Cognito) Have great experience with headless CMS systems (like Strapi) Have a drive to continuously improve Like being a part of a cohesive team Like mentoring and are not afraid to take the lead What we bring to the table The location choice is yours: remote, on-site or hybrid Flexible working hours Work with new technologies in a high-performance environment IT community involvement — Meetups, Workshops & Articles Internal workshops & personal development Educational budget 100% paid sick leave Paid health insurance Subvention of Multisport card Transport allowance & meal allowance Salary range Our salaries are based on your experience, level of knowledge & technical interview. We will contact only the candidates who are the best fit for the current project or for a project that will be active in the coming months. Sounds exciting? Click on the button below and apply now 🙂 Apply now General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Key Account Manager - Tech Consulting and Software Engineering URL: https://q.agency/careers/key-account-manager/ We are expanding our Business Development & Client Service team with 2 new members to help drive the growth of our enterprise engagements. We need a Key Account Manager who can step in, own key client accounts, shape the strategic direction of our partnerships, and work seamlessly alongside our production and engineering teams to turn business goals into high-impact software solutions. Key Account Manager | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers > Key Account Manager Key Account Manager Croatia , Hybrid Note: While this is a hybrid role, applicants must be legally living and working in Croatia to be considered. Are you a proactive, strategic, and growth-minded Key Account Manager who knows how to navigate client relationships, uncover business opportunities, and guide software projects from lead to delivery? We are expanding our Business Development & Client Service team with 2 new members to help drive the growth of our enterprise engagements. We need a Key Account Manager who can step in, own key client accounts, shape the strategic direction of our partnerships, and work seamlessly alongside our production and engineering teams to turn business goals into high-impact software solutions. At Q, we value a go-getter attitude and a drive to get things done. Our team prides itself on working hard and having fun while doing it. We strongly believe in the power of bringing like-minded people together. Your Role As a Key Account Manager (Mid/Senior) at Q, you will serve as the primary strategic partner and advocate for our key clients. You will bridge the gap between business requirements and technical execution, driving account growth, managing the sales funnel, and collaborating closely with our cross-functional delivery teams to ensure long-term client success and satisfaction. What is it all about? As the lead customer-facing person in Q, you will be responsible for: Account Ownership: Owning and nurturing relationships with several key accounts, iteratively maintaining strategic partnerships to drive growth and stability. Lead Conversion & Sales Funnel: Converting qualified leads into long-term clients, guiding them through the sales funnel, and coordinating internal stakeholders. Client Engagement & Scoping: Conducting client meetings, gathering structured project requirements, and preparing inputs for our production team. Proposals & Strategy: Creating compelling project proposals based on estimations provided by Q’s technical/production team. Account Growth & Reporting: Tracking account health, detecting threats, removing obstacles, and uncovering new cross-sell and up-sell opportunities. Sales Innovation & CRM: Keeping our sales processes fresh, maintaining precise tracking in our CRM, and managing the pipeline to hit key performance goals. Interdepartmental Alignment: Reporting regularly to the Head of BizDev and working closely with internal teams to ensure smooth delivery. What do we expect from you? 5+ years of experience in Sales or Account Management within the IT industry. Language Proficiency: Professional working proficiency in both English and Croatian (written and spoken). Communication & Executive Presence: Exceptional presentation and written communication skills, with proven experience managing C-level stakeholders. Relationship Building: Excellent interpersonal skills to connect with diverse internal teams and global clients. Mindset & Approach: A strong “will do” attitude, global mindset, high attention to detail, and a focus on high quality. Organization: Ability to self-direct, adapt to new tools/procedures, and prioritize effectively under deadlines. Mobility: Willingness to occasionally travel to client sites. It would be awesome if you also have: Experience working in an agency environment (managing multiple client accounts simultaneously). A technical background or hands-on understanding of software development projects. Local residency in Zagreb or the surrounding area. What Q offers you Sales bonus – variable part of the salary Flexible working hours & hybrid work Diverse international clients Internal workshops and continuous professional development 100% paid sick leave Private health insurance Multisport/PassSport card subsidy Transportation allowance Meal allowance Salary Range Our compensation model is based on your overall experience, depth of knowledge, and performance during the interview process. €3,000.00 – €4,200.00 Gross 1 Sounds like your next challenge? Click the button below and apply now! 😊 Apply now General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Open Application - Tech Consulting and Software Engineering URL: https://q.agency/careers/open-application/ No match today? No problem 🙂 We love meeting new people with new ideas. If you think you belong at Q but don’t see the perfect opening, just reach out. Tell us what you do best and why you’re a match for our culture. We’re always growing, and we’d love to have you in our […] Open Application | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers > Open Application Open Application Croatia , Hybrid , Remote No match today? No problem 🙂 We love meeting new people with new ideas. If you think you belong at Q but don’t see the perfect opening, just reach out. Tell us what you do best and why you’re a match for our culture. We’re always growing, and we’d love to have you in our orbit for when the next big thing opens up. One quick note on where we are: To keep our current momentum, we’re focusing on mid-level and senior roles. This means we aren’t able to take on students, high schoolers, entry-level, or junior talent just yet. If you’re still early in your journey, keep us in mind for down the road! How we’ll play it: We’ll keep an eye out: If a role opens up that feels like a “eureka” moment for your skillset, we’ll be the first to reach out. Keep an eye on us: In the meantime, don’t be shy! If you see a new posting later that makes you say, “That’s the one,” please apply directly. We’d love to see your name pop up again. In the meantime, have a great day and keep doing cool things! Apply now General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Senior AI Solution Architect (Expression of Interest) - Tech Consulting and Software Engineering URL: https://q.agency/careers/senior-ai-solution-architect-expression-of-interest/ Are you a Solution Architect who’s designed systems with LLM components in production – not just added an “AI” box to a diagram? We’re expanding our AI engineering practice for enterprise clients in healthcare, media, and other regulated industries. We need an architect who can design the whole system: how the agent fits into the […] Senior AI Solution Architect (Expression of Interest) | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers > Senior AI Solution Architect (Expression of Interest) Senior AI Solution Architect (Expression of Interest) BiH , Croatia , Remote , Serbia Are you a Solution Architect who’s designed systems with LLM components in production – not just added an “AI” box to a diagram? We’re expanding our AI engineering practice for enterprise clients in healthcare, media, and other regulated industries. We need an architect who can design the whole system: how the agent fits into the client’s infrastructure, what breaks, what it costs, and why one approach is better than another for that specific client. We’re a ~300-person digital agency serving globally recognized enterprise clients. AI is becoming a component of every system we design. We need the person who makes the architectural decisions. This is an open call of interest rather than an active vacancy. We are proactively building our AI pipeline and would love to review your background for future roles. If your profile aligns with our vision, we will be in touch when the right project kicks off. If this sounds like you, we’d love to hear from you. What is it all about? Design end-to-end architectures for agent systems and LLM-powered applications: from user input to production deployment, including all integrations, data flows, and compliance layers. Make and defend technology choices: which LLM provider, which vector database, which retrieval strategy, which agent pattern, which cloud services — and why, for this specific client and use case. Design RAG architectures: chunking strategies, embedding model selection, vector database design (pgvector, Pinecone, Weaviate), hybrid search, reranking — choosing the right approach based on corpus size, update frequency, latency requirements, and regulatory constraints. Design agent architectures: single-agent, multi-agent orchestrator, pipeline, human-in-the-loop, hybrid agent + deterministic workflows. Know when each is appropriate and when an agent is the wrong answer entirely. Design integration architectures: how agent systems connect securely with client enterprise infrastructure — ERP, CRM, ITSM, document management, identity systems. OAuth, API gateways, mTLS, data isolation. Design security and compliance architectures: PII handling, prompt injection prevention, audit logging, data residency, EU AI Act risk classification, GDPR, SDAIA requirements. Design observability and evaluation architectures: what gets traced, how quality is measured, how cost is attributed, how drift is detected. Estimate effort and infrastructure costs for AI engagements. Understand what’s different about estimating AI projects vs classical software (higher variance, non-deterministic behaviour, eval overhead). Lead technical conversations with client CTOs and Heads of Engineering. Present architectures, defend decisions, answer hard questions under pressure. Write the technical sections of proposals: approach, architecture, timeline, team composition, risks, and infrastructure requirements. Collaborate with AI Engineers on implementation feasibility, with AI Ops Engineers on operational design, and with Use-Case Consultants on technical qualification of new opportunities. Build and maintain Q’s standard architectural assets: reference architectures, decision frameworks, estimation templates, and security checklists. Design hybrid deployment architectures across hyperscaler AI services (Bedrock, Azure OpenAI, Vertex), client infrastructure, and Q’s private H200 GPU cluster. Decide where each workload runs based on cost, latency, data sensitivity, and sovereignty. Design LLM cost architectures: prompt caching, model tiering and routing, batch vs real-time, token budgets. Defend TCO to client finance stakeholders. Design prompt and context architectures: system prompt composition, structured output contracts, prompt versioning as deployable artifacts, context budgeting across multi-step workflows. Design evaluation architectures for non-deterministic systems: golden datasets, LLM-as-judge, regression testing, drift detection — at CI and in production. Select and defend models and frameworks: closed vs open-source LLMs, agent frameworks (LangGraph, Anthropic agent patterns, OpenAI Agents SDK), orchestration (n8n vs code-native), inference servers (vLLM, TGI). What do we expect? 7+ years in software engineering, with 3+ in a Solution Architect or equivalent technical leadership role. Experience designing distributed systems, API architectures, and enterprise integrations at scale. Hands-on experience designing at least one LLM-powered system that went to production — not just advising on one. Understanding of LLM internals at architectural level: tokenisation, context window economics, provider cost/latency/capability differences (Anthropic, OpenAI, Google, open-source via vLLM), and their implications for system design. Understanding of RAG architecture: retrieval strategies, embedding models, vector database trade-offs, chunking approaches. You don’t need to implement — you need to make the right design decision and explain why. Understanding of agent architectural patterns: when to use agents vs deterministic workflows, state management, checkpointing, tool use design. Experience with at least one cloud platform at an architectural level (AWS, Azure, or GCP), including AI/ML services (Bedrock, Azure OpenAI, Vertex AI). Ability to design model routing strategies: local vs hosted, small fine-tuned vs frontier, provider failover. Understanding of LLM cost optimisation as architectural concern: caching, routing, batching, context budgeting. Familiarity with prompt registries and eval harnesses as architectural concerns. Experience with agent frameworks at design level (LangGraph, Anthropic agent patterns, OpenAI Agents SDK) – enough to choose between them. Experience in estimating and scoping complex technical projects. Bonus if you’ve estimated AI-specific work and seen where estimates broke. Ability to read and review code in Python and at least one other language. You don’t write production code — but you must be able to evaluate it. Experience leading technical pre-sales: presenting to client technical leadership, writing technical proposals, and defending architectural decisions. Understanding of security architecture for AI systems: OWASP LLM Top 10, data isolation, PII handling, audit trails. Familiarity with self-hosted LLM deployment (vLLM, TGI), inference optimisation, and GPU memory/batching trade-offs at architectural level is a strong plus. Familiarity with EU AI Act, GDPR, and regulatory compliance as architectural constraints is a strong plus. Experience in healthcare, media, energy, or government/public sector verticals is a strong plus. Familiarity with LLM observability architecture (Langfuse, LangSmith, OpenTelemetry) is a plus. Familiarity with MCP (Model Context Protocol) and agent interoperability standards is a plus. Cloud architecture certification (AWS SA Professional, Azure AZ-305, GCP Cloud Architect) is a plus. Cloud AI certification (Azure AI-102, AWS AI Practitioner, GCP ML Engineer) is a plus. Excellent communication skills — you can explain an architectural decision to a CTO and a junior developer with equal clarity. Advanced English language skills. Salary range The location choice is yours: remote, on-site or hybrid Flexible working hours Work with new technologies in a high-performance environment Access to enterprise-grade infrastructure for architectural prototyping, including Q’s on-premise NVIDIA H200 GPU cluster Diverse international projects IT community involvement — Meetups, Workshops & Articles Internal workshops & personal development 100% paid sick leave Paid health insurance Subvention of Multisport card Transport allowance & meal allowance Salary range Our salaries are based on your experience, level of knowledge & technical interview. We will contact only the candidates who might be the best fit for future opportunities. Sounds exciting? Click on the button below and apply now 🙂 Apply now General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Senior Full Stack Engineer - Tech Consulting and Software Engineering URL: https://q.agency/careers/senior-full-stack-engineer-2/ Are you a JavaScript engineer who thrives on understanding how things work under the hood rather than just gluing framework APIs together? Do you get excited about low-level engine mechanics, browser internals, and designing resilient, high-availability systems that handle serious data volumes? Senior Full Stack Engineer | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Careers > Senior Full Stack Engineer Senior Full Stack Engineer BiH , Croatia , Serbia Are you a JavaScript engineer who thrives on understanding how things work under the hood rather than just gluing framework APIs together? Do you get excited about low-level engine mechanics, browser internals, and designing resilient, high-availability systems that handle serious data volumes? We value a go-getter attitude, a drive to get things done, and the empathy to truly understand our clients’ needs. Our team takes pride in working hard – and having fun while doing it. We believe in the power of collaboration and bringing like-minded people together to build great things. Your role As a Senior Full Stack JavaScript Engineer, you will design, build, and maintain high-availability systems handling large data volumes with strict uptime requirements. You will take ownership of backend services end-to-end, drive core system architectures, and ensure high engineering standards across the stack. We are looking for an engineer who possesses a deep, foundational understanding of core JavaScript and TypeScript principles without relying heavily on abstract frameworks. You know what happens under the hood, from browser mechanics to backend runtime execution and you bring strong Computer Science fundamentals to solve complex scalability and performance challenges. Tech stack & Core concepts Languages/Frameworks: Modern JavaScript (Vanilla JS), TypeScript, Node.js Architecture & Backend: Distributed Systems, Event/Data Streaming (Kafka, Kinesis, etc.), Messaging Queues (RabbitMQ, SQS, etc.) DevOps & Infra: Docker/Containers, CI/CD pipelines, Infrastructure as Code (IaC) Fundamentals: D ata structures, algorithms, browser engines/inner workings What we expect Core technical expertise Vanilla JavaScript & TypeScript Deep Understanding: True mastery of core JS/TS concepts, event loops, memory management, and browser inner workings beyond just using framework-level abstractions. High Availability & Distributed Systems: Proven, hands-on experience designing, building, and operating high-availability backend systems in production handling large data volumes. Event & Message Architectures: Strong familiarity with event/data streaming technologies (e.g., Kafka, Kinesis) or message queue systems (e.g., RabbitMQ, SQS). DevOps Ownership: Comfortable with containerization, building modern CI/CD pipelines, and working with Infrastructure as Code. Ways of working LLM Tooling & AI-Assisted Development: Good leverage of LLM tools (e.g., Claude Code, Cursor, GitHub Copilot) to enhance productivity within your daily engineering workflow. Engineering Excellence: Ability to take complete ownership of complex subsystems, mentor team members, and communicate technical decisions clearly. Optional Advantage (nice to have) Experience with performance optimization at scale. Prior involvement in architecting event-driven microservices architectures. A CS degree (or equivalent practical experience) with a solid grasp of core data structures (e.g., binary trees, hash maps) and the ability to articulate trade-offs and real-world application scenarios. What we offer Choose how you work: Remote-first culture with the option to work remotely, hybrid, or on-site (Croatia, Serbia, or Bosnia and Herzegovina). Flexible working hours: Balance your work and life on terms that suit you best. Growth & Mentorship: Opportunity to work on complex, high-scale global projects with modern tools and continuous learning opportunities. Comprehensive Healthcare: Private health insurance and 100% paid sick leave. Financial Perks: Third-pillar retirement savings, referral rewards, seasonal bonuses, and travel allowances. Well-being & Community: Subsidized sports cards (MultiSport/PassSport), internal workshops, meetups, and team-building events. Salary range Senior Full Stack JS Engineer: €3.000 – €5.000 gross 1 (dependent on experience and technical interview performance) Sounds exciting? Click on the button below and apply now. 😊 Apply now General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Cookie Policy URL: https://q.agency/cookie-policy/ Cookie policy explaining how we use cookies, tracking technologies, and your data preferences, including how to manage or disable cookies. Cookie Policy | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Cookie Policy Cookie Policy This is the Cookie Policy for Q, accessible from https://q.agency/ . Last updated: 04 September 2026. What are Cookies? Cookies are small text files in the source code of a website which are downloaded by the browser to your device (e.g. computer, tablet, smartphone). Cookies serve a number of important functions, including remembering your preferences, letting you navigate between pages efficiently, remembering users and their previous interactions with a website, and generally improving user experience. They also help us understand how our website is being used. You can manage your cookie preferences at any time here . However, please be aware that if you choose not to enable cookies it may prevent you from taking full advantage of the website and some parts of the website may fail to work. Types of Cookies Generally, there are three different ways to classify cookies: which purpose they serve, how long they endure and their origin. All types of cookies are described in this section, and you can also find a list of all cookies that we use on this website in the table below. Purpose Necessary cookies are essential for the operation of our website. Without them, it is impossible to use our website properly, therefore it is not possible to disable these cookies. These cookies do not include any personal information about you or your web history. Performance and functional cookies are used to help us improve the way our website works and also help us gather statistical information in order to provide you with a great experience on this website. In order to remember your preferences, we need to set cookies so that your information can be called up whenever you interact with a page that is affected by your preferences. You can withdraw your consent at any time by opening the cookie settings here. Marketing and analytics cookies are targeted advertising cookies that store information about your behavior by tracking your browsing habits and history. You can withdraw your consent at any time by opening the cookie settings here. Duration Session cookies are cookies that expire at the end of the browser session or have a short expiration time. Cookies that can be stored for longer are called persistent cookies , and the duration of persistent cookies may vary for each cookie. Origin First-Party cookies are set by us, and Third-Party cookies are placed on your device by another company when you visit our website (for example Google Analytics). Third-Party cookies may be placed on your device by someone providing a service to us or by our business partners. When a Third-Party cookie is set, our website acts as an intermediary and only the third party that sets the cookie has access to the information stored in and transmitted by the cookie. These cookies may track certain information, for example, how much time you spend on the site or the pages that you visit, which helps us understand how we can improve this site for you. To collect this information we use different services (Google Analytics, LinkedIn & HotJar) who help us showing you relevant products and services based on what you appear to be interested in. We also use Google’s reCAPTCHA product in order to help protect our website from spam and abuse. It may analyze traffic and may install cookies on your device. reCAPTCHA is used to check whether the data entered on our website (through our “Contact Us” form) has been entered by a human or by an automated program. To this, reCAPTCHA analyzes the behavior of the website visitor based on various characteristics (e.g. IP address, how long the visitor has been on the website, etc.). Necessary Cookies Name: cookieyes-consent Service: Q (q.agency) Purpose: CookieYes sets this cookie to remember users’ consent preferences so that their preferences are respected on subsequent visits to this site. It does not collect or store any personal information about the site visitors Cookie type and duration: Necessary, First-Party, 1 year Name: __Secure-ENID Service: Google (reCAPTCHA) Purpose: Set by Google’s reCAPTCHA to tell real visitors apart from bots, protecting the site’s forms from spam and abuse Cookie type and duration: Third-Party; 13 months Functional Cookies Name: li_gc Service: .linkedin.com Purpose: Remembers your cookie consent choice for LinkedIn’s cookies (used when you are not logged in to LinkedIn). Set by LinkedIn on its own website (linkedin.com). Stores the visitor’s consent for LinkedIn cookies (guests). Set on the linkedin.com domain Cookie type and duration: Functional, Third-Party, 6 months Name: lidc Service: linkedin.com Purpose: Helps LinkedIn’s advertising features work smoothly by routing your request to the nearest LinkedIn server. Set by LinkedIn on its own website (linkedin.com). Facilitates data-centre selection (routing). Set on the linkedin.com domain Cookie type and duration: Functional, Third-Party, 1 day Analytical Cookies Name: _ga Service: Google Analytics. Purpose: Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site’s analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors. Cookie type and duration: Analytics, First-Party, 2 years Name: _ga_* Service: Google Analytics. Purpose: Keeps GA4 session state. Used by Google Analytics to group your activity into a single visit (session), so Q can see how you move through the site during that visit Cookie type and duration: Analytics, First-Party, 2 years Name: __hstc Service: HubSpot. Purpose: HubSpot set this main cookie for tracking visitors. It contains the domain, initial timestamp (first visit), last timestamp (last visit), current timestamp (this visit), and session number (increments for each subsequent session) Cookie type and duration: First-Party, 6 months Name: hubspotutk Service: HubSpot Purpose: HubSpot sets this cookie to keep track of the visitors to the website. This cookie is passed to HubSpot on form submission and used when deduplicating contacts. It contains an opaque GUID to represent the current visitor. Tracks visitor identity, links to forms Cookie type and duration: First-Party, 6 months Name: __hssc Service: HubSpot Purpose: Tracks the current session Cookie type and duration: First-Party, 30 minutes Name: __hssrc Service: HubSpot Purpose: Detects a new session Cookie type and duration: First-Party, Session Name: __cf_bm Service: Cloudflare (viaHubSpot) Purpose: Protects the contact form and chat from spam by checking that a real person is using them. Set by HubSpot; Q can’t read it Cookie type and duration: Third-Party, 30 minutes Name: _hjSessionUser_ * Service: Hotjar Purpose: Recognises a returning user. The number in the Hotjar cookie names (3435241) is the website’s Hotjar ID – the same for every visitor, not a personal identifier Cookie type and duration: First-Party, 1 year Name: _hjSession_ * Service: Hotjar Purpose: Used by Hotjar, which helps us see how visitors move around the site so Q can make it better. It holds temporary data about your current visit Cookie type and duration: First-Party, 30 minutes Marketing Cookies Name: _gcl_au Service: Google Ads Purpose: Used by Google Ads to measure which ad clicks lead to actions on the site (for example filling in a form), so we can see whether our ads are working. This is known as conversion tracking Cookie type and duration: First-Party, 3 months Name: _fbp Service: Facebook Pixel Purpose: Set by Facebook (Meta) to show you relevant ads on Facebook and Instagram, and to measure how well those ads perform. This is also used for retargeting — showing you ads after you visit the site. Cookie type and duration: First-Party, 3 months Name: bcookie Service: .linkedin.com. Purpose: A LinkedIn identifier for your browser, used to show you relevant ads and measure how LinkedIn ad campaigns perform. Set by LinkedIn on its own website (linkedin.com). Cookie type and duration: Third-Party, 1 year Name: VISITOR_INFO1_LIVE Service: YouTube Purpose: Estimates the visitor’s connection speed and remembers playback preferences. YouTube also uses it to build an advertising profile. Cookie type and duration: Third-Party, 6 months Name: VISITOR_PRIVACY_METADATA Service: YouTube Purpose: Stores the visitor’s cookie consent state as recorded by YouTube. Cookie type and duration: Third-Party, 6 months Name: YSC Service: YouTube Purpose: Holds a unique session identifier that YouTube uses to count video views. Cookie type and duration: Third-Party, session Name: __Secure-YNID Service: YouTube Purpose: Identifies the browser so YouTube can personalise content and advertising. Cookie type and duration: Third-Party, 6 months Name: __Secure-ROLLOUT_TOKEN Service: YouTube Purpose: Controls which player features and experiments are served to this browser. Cookie type and duration: Third-Party, 6 months Name: __Secure-YEC Service: YouTube Purpose: Stores YouTube’s own consent and preference state for the visitor. Cookie type and duration: Third-Party, 13 months Name: TESTCOOKIESENABLED Service: YouTube Purpose: Checks whether the browser allows storage before the player attempts to use it. Cookie type and duration: Third-Party, persistent Name: LAST_RESULT_ENTRY_KEY Service: YouTube Purpose: Records the most recent player action so playback can resume consistently. Cookie type and duration: Third-Party, persistent Name: yt-icons-last-purged Service: YouTube Purpose: Records when the player last cleared its cached interface icons. Cookie type and duration: Third-Party, persistent Name: ytidb::LAST_RESULT_ENTRY_KEY Service: YouTube Purpose: Records the most recent entry written to the player’s local database. Cookie type and duration: Third-Party, persistent Name: YtIdbMeta#databases Service: YouTube Purpose: Keeps an index of the local databases the YouTube player has created. Cookie type and duration: Third-Party, persistent Name: LogsDatabaseV2:V#||LogsRequestsStore Service: YouTube Purpose: Queues player diagnostic events locally before they are sent to YouTube. Cookie type and duration: Third-Party, persistent Name: __cf_bm Service: Cloudflare (via Vimeo) Purpose: Cloudflare bot-management token used by the Vimeo player to tell human visitors from automated traffic. Cookie type and duration: Third-Party, 30 minutes Social Media All personal data gathered via Q’s social media is processed in accordance with the GDPR. Specifically, Q can be found on the following social media whose privacy policy is linked below: Facebook , LinkedIn , Instagram , Youtube , X . Data Transfers to Third Countries In the case of some Third-Party cookies, personal data is transferred outside the European Economic Area (EEA). All cases of data transfers include transfers to the United States. Since the United States does not provide the level of protection required under the General Data Protection Regulation 2016/679 (“GDPR”), appropriate safeguards are provided under standard contractual clauses (“SCCs”) by the European Commission for data transfers outside the EEA. The cases of data transfers are listed below: Cookies placed by Google LLC Google LLC is a company based in the United States, with its registered offices at 1600 Amphitheatre Parkway Mountain View, CA 94043, USA. You can find out more about Google LLC’s data processing terms here . Cookies placed by LinkedIn Corporation LinkedIn is a company based in the United States, with its registered offices at 1000 West Maude Avenue, Sunnyvale CA 94085, USA. You can find out more about LinkedIn Corporation’s data processing terms here . Cookies placed by Microsoft Corporation Microsoft Corporation is a company based in the United States, with its registered offices at One Microsoft Way, Redmond, WA 98052-7329, USA. You can find out more about Microsoft Corporation’s data processing terms here . Cookies placed by Hubspot Hubspot is a company based in the United States, with its registered offices at 2 Canal Park, Cambridge, MA 02141, USA. You can find out more about Hubspots’ data processing terms here . Legal Background and Basis When it comes to the use of the necessary cookies (used for technical functioning of the website), the European Directive 2002/58/EC (amended by Directive 2009/136/EC) concerned with the protection of privacy in the electronic communications sector requires consent for storage or access to information stored on users device. There is an exception to the requirement to obtain consent where the use of the cookie is strictly necessary for the provision of an information society service requested by the user, which is the case with the necessary cookies that are strictly necessary for the operation of our website. For performance and functional and marketing cookies , the legal basis for processing is your consent pursuant to Article 6 paragraph 1 point a of the GDPR. You can withdraw consent at any time and manage cookie settings here . Managing Your Cookie Settings You can change your cookie preferences at any time by opening settings here . Be aware that disabling cookies may affect the functionality of this and many other websites that you visit. Disabling cookies will usually result in disabling certain functionality and features of the site. More Information About Cookies More detailed information about cookies and setting your browser preferences can be found on the www.allaboutcookies.org page. If you are still looking for more information on how we use cookies then you can contact us via email at gdpr@q.agency . Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Legal info URL: https://q.agency/legal-info/ Legal Info: Company details, registration data, and governance information for Q agency. Legal info | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Legal info Legal Info Q d.o.o. (Q Ltd.) a limited liability company for services Reljkovićeva 4, 10 000 Zagreb, Croatia Company The company is registered before the Commercial Court in Zagreb, under the number (MBS) 080853950, PIN (OIB) 78082062075. Bank Details Bank Account No. HR5123400091110593342 with Privredna banka Zagreb d.d., Radnička cesta 50, 10000 Zagreb, Croatia Share Capital Share capital in the amount of 58.290,00 euro paid in full. Board Members Members of the Management Board are Hrvoje Gorajščan, Vedran Tolić, Goran Kovačević, Dalibor Jurgec and Filip Ljubić. Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Privacy Policy URL: https://q.agency/privacy-policy/ Privacy Policy: Learn how Q agency collects, uses, stores, and protects personal data in accordance regulations. Privacy Policy | Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Privacy Policy PrIVACY POLICY Last updated: 17 August 2026 01. Introduction Q Ltd., Reljkovićeva ulica 4, Zagreb, Croatia, registered before the Commercial Court in Zagreb, Croatia, under the number (MBS:) 080853950 (referred to as “Q”, “we”, “our” or “us”). Q is the controller for the personal information we process, unless otherwise stated. More details on how you can contact us can be found here. This Privacy Policy explains how and why we collect, store, use, or otherwise process the personal data of our end users (referred to as “you”) when you visit our website and other interactions you may have with Q (inquires, contact forms, seeking business cooperation or employment with us, visiting our offices etc.), and details the procedures we have in place to safeguard your privacy. We keep our Privacy Policy under regular review to make sure it is up to date and accurate. Q can modify this Privacy Policy and the most recent version of the Privacy Policy can always be found on our website. The date of the last update is listed at the top of the Privacy Policy. Our Privacy Policy should be read together with our Cookies Policy. 02. Contact details Your first point of contact for privacy aspects at Q is our Data Protection Officer (DPO). You can contact our DPO or us by phone (+385 1 481 6175), email ( gdpr@q.agency ) or by mail at our registered office address at Reljkovićeva ulica 4, 10000 Zagreb, Croatia. You have the right to file a complaint with the Croatian Personal Data Protection Agency (AZOP), the national supervisory authority for data protection issues in Croatia ( https://azop.hr/ ). 03. Definitions Consent is a freely given, specific, informed and unambiguous indication of a data subject’s wishes by which he or she, by a statement or a clear affirmative action signifies agreement to the processing of personal data. Cookies are small text files in the source code of a website which are downloaded by the browser to your device. You can find out more about cookies and how we use them in our Cookie Policy. Data Controller is the person or organization (any natural or legal person) that decides how and why personal data is processed. Data Processor is the person or organization (any natural or legal person) that processes personal data on behalf of the data controller. Data Subject or you, refers to any natural person who shares their personal data with us. Personal data refers to any information or pieces of information that could identify you either directly or indirectly from one or more identifiers or from factors specific to the individual. Processing means any operation or set of operations performed on personal data, whether or not by automated means. This includes collecting, storing, using, sharing, even deletion and destruction. 04. Personal data we collect We only collect data which is necessary, relevant and adequate for the purpose for which you are providing them. We collect personal data: When you visit our website We collect personal data about you when you use our website (https://q.agency/). Without it, we may not be able to provide the services you requested. Automatically collected data We use cookies and similar technologies on our website. The cookies are either placed automatically (necessary cookies) or you will have to provide your consent for them (functional and performance and marketing cookies). For more information and your opt-out options, please visit our Cookie Policy. Data you provide to us Name and surname E-mail address Affiliation Additional information This data may include your contact and other information when you give your personal data to us by (i) filling out our “Contact Us” form provided on our website, (ii) sending us an email or (iii) when you apply for a job or internship with us. If you contact us via our “Contact us” form on our website, we will ask you to provide your name, surname and email address. At your discretion, you may provide us with additional information about you, such as affiliations, company on behalf you are getting in touch with us, country, and any other information you decide to share with us. In case you decide to submit an application for a job position at Q, we will ask you to provide your name and surname, email address, place of residence, information about your education, previous work experience, and any other information you share with us in your resume (CV) when you apply for a position via our careers site. We may also collect other additional information about you from other web sites (such as business networking sites) if your resume (CV) or application contains links to such sources and other publicly available sources. When you visit our offices We may collect your personal data such as your name, surname, affiliation and contact details. For processing of this data, we will ask you to provide your consent. If you visit our offices we may also process your personal data via CCTV recordings, as some entrances and spaces are under CCTV surveillance to manage and control access and guarantee safety and security for our employees and other persons. You will be notified about such processing and all your related rights prior to your entry to such spaces. When you provide your products or services to us We may collect name and surname, address, phone number, email address, as well as your billing information, including your bank account details, billing address, VAT number and any other information we are legally required to obtain or necessary to obtain to enter into an agreement if you are our supplier. 05. How do we collect your personal information We may collect your personal data either directly from you when you interact with us directly, correspond with us or submit information to us by email, phone, on social media, when you visit our offices, enter into contractual relationship with us or automatically when you access and browse our website, when we collect information about your usage and activity on our website, using certain technologies, such as cookies. Please note that we also use publicly available information. Our website may include links to third-party websites, plug-ins and applications . Following those links or enabling those connections may allow third parties to collect or process data about you, but please be advised that we do not control these third-party websites and we are not responsible for their privacy practices, so we encourage you to read their privacy policies. 06. How long do we keep your personal information We will not retain your personal information for longer than necessary for the purposes set out in this Policy. Different retention periods apply for different types of personal information. Information we collect when you visit our website How long we keep it depends on the type of cookies. Please visit our Cookie Policy for more details on data retention periods for cookies. Information we collect from you when you visit our offices Information collected via CCTV (video surveillance) will be automatically deleted after 30 days. Information we collect from you provide your products or services Some personal information of a supplier will be deleted 12 months after the end of our business relationship with the supplier. However, some information will be deleted after 6 or 11 years, and some will have to be kept permanently due to obligations prescribed by Croatian laws and regulations. Other data you provide to us, such as data needed to process your request or inquiry or communicate with you when you directly contact us, will be deleted after 6 months, unless we have entered into a contract with you where other data retention rules will apply. 06. Legal basis for processing We rely on the following legal basis for processing: Consent We rely on your consent for the following purposes: cookies (other than necessary cookies), for certain instances of personal data you provide to us when we use your products or services. You have the right to withdraw consent at any time, without affecting the lawfulness of the processing based on your consent prior to such withdrawal. Contractual relationship We need to process certain data which may include personal data, prior to entering into an agreement with you and to fulfill our obligations under the contract we have with you, including processing your request, providing the agreed services, and managing and fulfilling our contractual obligations. To comply with a legal obligation We may need to process your personal information to comply with various legal obligations, including responding to legal requests and legal processes, complying with laws and regulations, and maintaining records for tax, audit and other legal purposes. Legitimate interest Sometimes, it is in our legitimate interest to process your personal information for reasons such as improving our services, ensuring security of our services or analyzing and understanding our audience to enhance user experience. We will not use the data for any purpose nor on any basis other than those listed above. If we need to process personal information for reasons other than those mentioned above, we will explicitly ask for your permission. 07. Automated decision making Q does not conduct any decision making process without human intervention, so-called automated decision making, that could have a significant impact on you. 08. Security We are committed to privacy and safety, and we have taken appropriate organizational and technical measures for the protection of the personal data. The security of the processing of your personal data is confirmed by the ISO 27001:2022 and ISO/IEC 27701:2019 standards. We ensure that our employees receive thorough, complete and regular training on data protection practices to ensure they handle personal data appropriately and securely. 09. Your rights As a data subject, you have the following rights which you can exercise by reaching directly to our Data Protection Officer via email: gdpr@q.agency or via phone: +385 1 481 6175 as a first instance. Right to access means that you have the right to learn whether we process your personal information, and the right to request a copy of your personal information. Right to rectification if you believe that any of the information is inaccurate or incomplete. Right to be forgotten means the right to require us to delete and remove any of your personal information we have. Right to restriction of processing of your personal information. Right to portability allows you to obtain and reuse your personal information across services, enabling you to request a copy of your data from us, as well as to transfer your data easily from us as the Data Controller to another data controller. Right to object to using your personal information for a particular purpose. If this does not lead to a satisfactory outcome, then there is always the right to file a complaint with the Personal Data Protection Agency (Agencija za zaštitu osobnih podataka – AZOP); the supervisory authority in the area of privacy. Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q is in the Top 20 Companies in the world - Tech Consulting and Software Engineering URL: https://q.agency/blog/1-on-the-clutch-list-of-top-b2b-companies-in-croatia/ Q ranks among Clutch’s Top 20 companies worldwide and is recognised as the #1 B2B company in Croatia, highlighting its global software development expertise and client success. Q is in the Top 20 Companies in the world | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q is in the Top 20 Companies in the world Q is in the Top 20 Companies in the world August 28, 2020 — 2 min read We found ourselves on the list of TOP 20 Companies by Clutch! Clutch.co is an independent research platform based in Washington and is the current leader in the B2B review market, and Q has been part of the Clutch platform for more than two years now. Clutch ranks all companies in 2 steps. First, they analyze the company’s services, client base, case studies, and media and social network presence. The second step is a call with clients. This way, Clutch makes sure they will provide personal and accurate reviews of the projects developed for clients. That’s why we are more than proud that Clutch recognized our dedication to what we do and ranked us in the Top 20 Companies in the world and #1 B2B Company in Croatia. It’s not just about being valued with awards like this; it’s the backstory of doing what we love and doing it the best possible way. More than seven years of development experience, devoted work, and attention to detail show our results. We take great pride in all our employees, who give their best every day to deliver the most competent product to our clients. Receiving recognition like this means a lot to us. To see our clients happy and satisfied with our solutions drives us to continue to strive for even greater things. We hope for many more moments like this one today. So, whether you’re developing a new product, running an online business, building a startup from scratch, or only looking to expand your development team, we can help you grow globally. That is why our motto is: “Whatever the Q, we got the A”. Vedran Tolic Vedran is the Founder and CBO at Q agency, currently leading our London office. He is experienced in business and product development and connects the two worlds while helping clients grow their digital products. Besides, he is the best burger maker in the world, trust us. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 28, 2020 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 28, 2020 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # 10 Reasons Why Q - Tech Consulting and Software Engineering URL: https://q.agency/blog/10-reasons-why-q/ Discover 10 reasons why Q is a great place to work, from a fantastic atmosphere and interesting projects to remote work, career growth, learning, and more. 10 Reasons Why Q | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > 10 Reasons Why Q 10 Reasons Why Q May 28, 2019 — 5 min read If you’re tired of reading generic mission and vision statements that never seem to give you a true sense of what a company is all about, don’t worry, we are too. Keep on reading and you’ll find 10 reasons why we love working at Q, even on Mondays 😉 1. Fantastic Atmosphere Of all the great things you’re going to read about Q, a great work atmosphere is by far the most recognized and appreciated. We are proud that we have kept the same relaxed and homely atmosphere we started with when we were just a couple of friends working on a good idea, hoping that someday we would achieve something big. 🙂 2. Interesting Projects Whatever we do in life, there are always some days we’re not thrilled with the projects we’re working on. That’s why our Biz Dev team works hard to find the best international clients and most interesting projects. We do our best to make sure projects oer great personal development for our designers and developers. And that’s the sweet spot we’re always trying to reach at Q. 3. We work in 20 countries We work in 20 dierent countries and several time zones from Alaska to Dubai with some of the most prestigious brands and fastest-growing startups. And even though we’re working internationally, our people come first — so we work only during our time zone working hours. The image below gives you a look at a small handful of clients we’ve helped over the past five years. 🙂 4. Work from home The freedom to make choices, including when, where, and for how long you want to engage in work-related tasks is really important. Why? Managing family, work, a social life, and trying to stay focused all the time can be stressful. We understand that and that’s why remote work is a big YES at Q. It is raining and although working from our oice is great, working from your home sounds like a much better option? Send an “out of oice” email and be productive from the comfort of your own home, from the local coee shop or from the Swiss mountains — the only thing you’ll need is your laptop and some wifi. 5. Career Growth Did you know that Q is recognized by Deloitte as the 3rd fastest growing IT company in Central Europe? In such a fast-paced environment, you can learn a lot and progress your career quickly. Technology Fast 50, Warsaw, Poland Our team members come from diverse backgrounds and dierent industries, but all share the same values and everyone is ready to lend a helping hand to their colleagues. If you’re a junior professional, we make sure you have an experienced mentor who gives you feedback regularly. And for the seniors among us who are indierent career stages, we try to keep them from getting stuck by working on dierent projects and by constant, both formal and informal, learning. 6. Constant Learning We invest in our people by giving them a chance to learn and progress in dierent technical, business and interpersonal fields. Workplace education has dierent forms, including internal tech and soft skills workshops, external meetups, and participation at various conferences. Most of the workshops are led by our own colleagues although we try to bring in external experts as well. We’re active in the local development community — one of the ways we do this is by hosting ambitious local meetups including PHP, Ruby, Frontend, and Design meetups. We will be part of engaging web-oriented workshops at Web Summer Camp in Rovinj, WebCamp Zagreb- the largest web conference in Zagreb, and the innovative workshop-oriented conference taking place in beautiful Istria, Digital.LAB. 7. Awesome Oices It’s scientifically proven that we humans are visual, aesthetic, and have diering tastes, but one thing is for sure — we all enjoy our beautiful oice space. Q building 1200m2 of new oice space increases our productivity. Terraces on every floor where we practice our morning Yoga, bike parking, a big Fun & Lounge Zone — the perfect space to host many meetups and build a development network. And for those who exercise before work, we have showers (because apparently, those people do exist). 8. Fun — fun — fun Happy people produce better results in their workplace — and that’s why we invest a lot of time, money and love into fun activities and leisure at Q. Projects and deadlines are always a priority, but even when working with tight deadlines, our team finds the time to relax and recuperate. For that reason, we’ve built a Fun & Lounge Zone where you can find: a pool table a foosball table a ping pong table darts PlayStations morning Yoga showers a lounge area fruits, snacks, sweets an unlimited supply of premium coee We also enjoy English lessons and discounts for gym memberships, escape rooms, bike servicing, restaurants, massages, hairdressers, and much more! Fun & Lounge Zone 9. Social Events Our colleagues work extremely hard, and we make sure they also have opportunities to play hard. Q strives to ensure that all our people feel connected and inspired. PHP MeetUp From local social events to company activities, we want our people to relax, have fun and be active. Some of our famous activities throughout the year include: the B2B Run, Team Building, Friday Fun — Gin & Tonic, Halloween Party, Meetups, Barbecues, etc. Team Building, 2018. 10. Dog-Friendly For all dog-lovers out there, good news- our people are free to bring their dogs to work! Being able to do so, keeps energy levels up, and brings joy to all. Important notice: we treat all of our dogs as peers so they too have to pass a trial period. Chilli To make sure that we live what we preach, you should come to Reljkoviceva 4 and see for yourself 🙂 Sara Madjer She has a diploma in Finance and Law and MBA in HR Management, which combined with her listening skills makes her a perfect fit for the People & Culture department. She is one of the oldest and most influential employees who grew together with Q. Sara also has her own show ”Coffe with Sara“ (Kavica sa Sarom). GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 28, 2019 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 28, 2019 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # 2019 JavaScript Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/2019-javascript-meetup/ JavaScript community celebrates 6 years and Meetup #50 with expert speakers, modern web development, new technologies, projects, and insights from experienced developers. 2019 JavaScript Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > 2019 JavaScript Meetup 2019 JavaScript Meetup July 9, 2019 — 2 min read JavaScript community reached a big milestone — they exist for more than 6 years and have finally hit meetup #50! People already know what to expect when they come to our meetups: check-in, a tour of the oice, high-quality speakers, the chance for them to share their projects at lightning talks, a job opportunity section, and of course free snacks and drinks at our beautiful garden terrace. The icebreaker was Jozef Képesi — CTO at kiwi.com (kiwi.com is an online travel agency with groundbreaking Virtual Interlining technology and a focus on exceptional customer service.) He said: “A few years ago, we were a bunch of cowboys trying to create the fastest flight ticket search engine. We did a lot of mistakes… But we did it with passion. I will talk about how we knew how to avoid all the issues, but at the same time, why we were not able to do it.” After Jozef, Nikola Vranesic from Q talked about trials while building a new modern business application: MaxBrain Classroom. He touched upon the enthusiasm while starting and wanting to use the newest technologies and architectural patterns versus the time constraints and limitations that we needed to overcome. He also discussed struggles and success while balancing between developing new features and refactoring existing ones. The event gave the opportunity for experienced community members to share their expertise, their adventures with new frameworks/concepts, cool projects, and, more generally, their experiences and inspirations. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 9, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 9, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # 2020 JavaScript Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/2020-javascript-meetup/ Learn about web video streaming, performance optimisation, and web automation with Puppeteer at Q’s 2020 JavaScript Meetup. 2020 JavaScript Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > 2020 JavaScript Meetup 2020 JavaScript Meetup March 2, 2020 — 2 min read We’ve learned how to deliver video content on the web, what challenges come with it, and how to use Puppeteer to build scripts that can automate web tasks. Doug Sillars who is a leading mobile developer advocate and evangelist broke the ice. He is widely known as an expert in mobile application architecture, especially when it comes to performance. His topic was “Streaming video on the web”. Doug said: “The use of video on the web and on mobile is growing. It is as easy as adding a, and you’re good to go. But, all the top video sites (YouTube, Netflix, Hulu) all stream their video. What do they know that we don’t know? Is streaming more eicient? Do I need any special equipment to create or serve video streams?”. In the end, we learned how to create and stream videos, weigh the pros and cons of streaming vs. static videos, and see how easy it is to get started delivering streaming content on the web or to a mobile app. Also, we looked at the performance aspects of delivering video on the web, and how to improve the performance of video by using streaming instead of static videos. Luka Fućek was next with his topic “Web automation with Puppeteer”. Luka started the talk with a lot of questions: “Ever wanted to make your own internet bot that would buy you a first ticket for the newest Tarantino premiere? Or maybe you don’t like the UI for ordering food from your favorite restaurant so you would like to have your node script order it for you every day?”. And then he explained how does the automated web interaction work using Google’s Puppeteer — a Node library that provides a high-level API to control Chrome or Chromium. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 2, 2020 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 2, 2020 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # 4 Key Steps to Skyrocket Client Satisfaction & Employee Engagement Rates - Tech Consulting and Software Engineering URL: https://q.agency/blog/4-key-steps-to-skyrocket-client-satisfaction-employee-engagement-rates/ Discover four key steps for improving client satisfaction and employee engagement, from measuring feedback to adapting HR initiatives and investing in people. 4 Key Steps to Skyrocket Client Satisfaction & Employee Engagement Rates | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > 4 Key Steps to Skyrocket Client Satisfaction & Employee Engagement Rates 4 Key Steps to Skyrocket Client Satisfaction & Employee Engagement Rates November 23, 2021 — 6 min read If you’re tired of reading generic blogs about happy clients and engaged employees in the development world that never seem to give you a true sense of what it is really all about, don’t worry, we are too. So keep on reading and find out if the link between “Customer Satisfaction” and “Employee Satisfaction” is a myth or a reality? Q has been among the Top 20 agencies for over a year regarding customer satisfaction on the most relevant portal worldwide — Clutch . Furthermore, we are a part of the most exclusive network of the top 7% of agencies in the world – Pangea . Recently, the leading company for measuring employee engagement, Peakon , ranked Q among the Top 5% of IT companies in the world in terms of engagement of its employees. In addition, we were named The Best Employer in the region according to the employee satisfaction survey conducted by MojPosao . Our goal here is not to brag about awards and recognitions, but to prove that the concrete steps in the approach to employees ultimately give tangible results. The four tips we will share with you below are eicient and useful . While some of them may not apply to every industry, practice with our clients has shown that most of them, in every environment, really create added value. If you want to have satisfied customers , you have to invest in people . When people are happy and engaged, the customers are automatically more satisfied. And when the customers are satisfied, it is automatically more comfortable for your employees to work with them. This relationship creates a positive spiral — one pulls the other, and so on. 1. Keep Employees Engaged Choose a good tool for measuring employee engagement that will be tailored to your company’s needs, and most importantly, monitor the data and react! We opted for Peakon , which allows us detailed insights and monitoring of progress. We send the survey every month , and it contains a dozen questions oriented to some of the 14 drivers of engagement on a scale from 0 to 10, and in each round, we add a couple of open questions that we create ourselves. Some of the areas we monitor are Strategy, Development, Freedom of Opinion, Management Support, Wellbeing, but we also measure Loyalty, Satisfaction, and Belief in Q . Net Promoter Score (NPS) is a metric you want to keep track of. We are proud that in the last survey, we have 82% of Promoters (engaged employees), 17% of Passive (not actively disengaged but still held back from applying their full-selves at work) and only 1% Detractors (disengaged employees). According to Gallup, the world average of Promoters is 15%, and the Croatian at only 13%, which shows that Q’s results are 600% above average! Employee Experience Survey 2. Modify HR Initiatives Monthly Earlier this year, the engagement score of our employees was 8.7. Today’s engagement score is an impressive 9.0 out of 10 . Each month, we dedicate time to analyze results, share them with team leaders, communicate with employees through anonymous Peakon messages, resolve any objections, and adopt any feedback we get. If you want to improve engagement, you need to listen to what people want and ask for . We learned the most by looking at the impact that specific drivers have on engagement. For example, Strategy, Rewarding, and Growth & Development have been shown to have the most significant impact on people’s satisfaction. Such information has helped us steer our eorts and initiatives in the right direction. Having said that, we recorded an interview with our CEO dedicated exclusively to strategy. Each team leader discussed their vision of the strategy and the order in which the company is going. We have also introduced Performance Management to more systematically enable the growth, development, and rewarding of employees. 3. Listen to Your Customers The basic premise of monitoring is simplicity and convenience, so we measure the satisfaction of all clients in Q once a month with simple surveys. We monitor 10 indicators through 4 main categories: Knowledge & Expertise, Passion & Commitment, Output Quality, and Communications. Don’t overengineer the process; make it simple. All our clients complete the survey once a month, and it takes only 60 seconds . That way, minimum eort is required from the client, and we get a large set of data to follow the trend by markets, countries, types of projects, project managers, and others. For example, today, our client’s average Passion & Commitment rating is 9.8 / 10.0, and the total Employee Engagement Rate is 9.0 / 10.0 . Both indicators have grown in parallel over the past few months. Your team is a dream to deal with and provide a level of confidence beyond what any of us expected. Lana Went, The Times The ratings went up because we never forgot to process the data and see what we could do better the following month. It is important to react as soon as you get feedback. In this way, clients’ and employees’ opinions get acknowledged, and together we are able to work on improvements that will benefit us all. In addition to short and quick feedback surveys, we have Deep Dive Interviews twice a year where the client gives long and extensive feedback. Customer Experience Survey 4. Full Transparency is Key We do an analysis every month using the simple functionality of Google Sheets, and we display the results through 10 charts in Google Slides that are available to all key departments. Project managers are in charge of communicating grades to the team . They also analyze in detail with the client each grade that is not excellent. In this way, we dedicate problems and raise satisfaction rates every month. Thus, threes become fours, and fours become fives, and over time, a positive growth trend can be seen. We share the overall analysis and results with the entire company through the internal mobile app Jenz . We share the kudos we receive from the clients and transparently communicate them to everyone. Jenz is an internal mobile app where we share all client feedback results once a month, company-wide. Conclusion All these things live and work at Q. Before we launched these initiatives, our people were not overly satisfied. We were even below average. However, according to the global platform Clutch, Q is now one of the Top 20 Web Development Firms in terms of quality. Regarding employee satisfaction, in just one year, we managed to become The Best Employer in the region according to the survey conducted by MojPosao. All of that enabled us to grow our revenues steadily year-over-year with the growth rate continuously being over 50% . I hope these tips and experiences will inspire you to make a turnaround in your company. We will not lie, all of this requires time and resources, but we have proven that the link between “Customer Satisfaction” and “Employee Satisfaction” really exists . So, to conclude, don’t forget to make changes – they come from within . Paula Kovacevic Paula is the Head of Operations, working on process improvement and developing the company's quality level. She is a Certified Internal Auditor for Quality Management and soon-to-be a Six Sigma Green Belt Master. She strives to keep processes simple and clients happy. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 23, 2021 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 23, 2021 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # 4 Key Takeaways from the Digital Lab.in Conference - Tech Consulting and Software Engineering URL: https://q.agency/blog/4-key-takeaways-from-the-digital-lab-in-conference/ Discover four key takeaways from the Digital Lab.in Conference, covering communication, collaboration, teamwork, reflection, and connecting with industry peers. 4 Key Takeaways from the Digital Lab.in Conference | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > 4 Key Takeaways from the Digital Lab.in Conference 4 Key Takeaways from the Digital Lab.in Conference October 4, 2019 — 5 min read 1. Communication, collaboration, critical thinking, and creativity will give you a leg up — regardless of your job description Merlin Rebrović started the conference by asking the attendees if, “Instead of chasing trends and fads, wouldn’t it be better to focus on knowledge and skills that last for decades or even a lifetime?” — and I, for one, agree. Little argumentation is needed in favor of collaboration and communication. After all, there are very few tasks or jobs to be done in our lives that can be achieved without other people. It’s common sense that being a skilled communicator and a thoughtful collaborator would make a person better suited to solve problems and life’s great mysteries. Fact is — Merlin knew his audience pretty well and simplified the matter in a Fallout-themed tl;dr — sometimes you need to up the charisma and perception to level up. And most of the time, these are the skills that carry over to all of your jobs and relationships most eortlessly. If you still need a push, here are two motivating quotes to focus your growth in these core skills. “The ability to deal with people is as purchasable a commodity as sugar or coee… And I will pay more for that ability than any other under the sun.” — John D. Rockefeller The person who has technical knowledge plus the ability to express ideas, to assume leadership, and to arouse enthusiasm among people — that person is headed for higher earning power. — Dale Carnegie So next time lunch break comes around and ordering food delivery requires calling the restaurant, be the odd person out when suddenly there are hands in the air and a chorus of “not me”. 2. Build a Team Let’s not lie to ourselves: when we were going to the conference we were pretty sure we weren’t going to get a tip there, so good that it would make the whole “work” part of the job go away. However, conferences are great at one other thing: teambuilding. A group of people working together does not necessarily make a team. Having a mutual vision, mutual goals, attending a conference together, and sharing blackmail worthy material — that helps. Teams need the time and the nourishment to be built — and a little “us” time goes a long way. Before the mojitos The making of the mojitos Surprisingly, 0 mojitos 3. Take Time to Reflect While we considered ourselves a good team regardless of our weekend getaway, the design team’s numbers have doubled in the last year and our projects have grown. Q has moved oices and introduced new roles and specialists to improve our eiciency. Amidst all this hustle, it’s hard to see personal growth if you don’t have a moment to look back and see where you were a year ago. “Reflection turns experience into insight — evaluate your experience.” — 15 Laws of Growth, John C. Maxwell Q’s entire design team packed their bags and drove away into the sunset for a weekend conference. We had the honor of Jure’s company, a frontend developer who either balanced out our Borg moments, or recorded them. Having a couple of days to re-group as a team and see how far we’d come felt nice. Getting our bearings to plot world domination felt even better. Truly, taking a step back is sometimes the best way to move forward. 4. Start Conversations The Digital Lab.in conference proved to be a great way to connect (and re-connect) with our peers. We cross-referenced our processes with other professionals, compared notes on the eiciency of our methods, exchanged book recommendations in the hopes of refreshing our perspectives, and analyzed the dierences (and similarities) of our experiences. Some of these conversations end up being troubleshooting shortcuts while others are just perfunctory introductions to the main course: sharing cat pictures. (Or, in my case, bizarre numbers of photos of my friend, a German shepherd who spent a rare weekend away from my shadow) This majestic creature I’ve mentioned the importance of looking back, learning from our experiences, and comparing notes on our progress and current methods. An equally important function of the talks delivered is starting conversations about where it is that we’re going as an industry and how we get to influence that journey. We argued that “Content is King”, then promptly careened into an era of fake news. We proved the measurability of our objectives and fell into the trap of user engagement the way Alice fell down a rabbit hole. If anything, the first step to solving a problem is recognizing there is one. To start conversations. Design has finally gotten “a seat at the table”. No significant opposition still exists to the idea of design bringing real value to businesses. If anything, now that it’s been so clearly linked to the success (and failure) of companies, it’s become so well monitored, optimized and scrutinized by a long line of managers, analysts, clients and users alike that we find ourselves approaching talking about design as if it’s a science. And if so, what can we learn from science? How do we avoid the traps of cognitive biases? What are we going to do with this seat at the table we so coveted? There’s great importance in starting conversations. It’s one of the reasons Q started hosting meetups. Building a community of like-minded people committed to shaping the conversation around the future of our work — it’s something we’d like to do. Join us on one of our meetups, or just drop us a line and let’s start a conversation 🙂 Ana Marija Susac Ana Marija is responsible for building the team's strengths and contributing to collaborative relationships with project stakeholders & other departments, pushing towards excellence. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 4, 2019 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 4, 2019 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # 8 Reasons Why Croatia - Tech Consulting and Software Engineering URL: https://q.agency/blog/8-reasons-why-croatia/ Discover eight reasons to choose Croatia for software development, from skilled engineers and English proficiency to connectivity and its growing IT scene. 8 Reasons Why Croatia | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > 8 Reasons Why Croatia 8 Reasons Why Croatia February 28, 2023 — 6 min read When analyzing a country’s software development potential, it is important to set a comprehensive criterion, including but not limited to: specific software skills and talent pool, culture and lifestyle, language proficiency, rates, time zone and connectivity, and last but not least — the destination itself. So without any further ado, here are eight reasons why Croatia should be your next destination for software development. 1. Great Engineers Croatia has an exceptional engineering heritage. Did you know Nikola Tesla was born in Smiljan, a small village in Croatia? One could say that Tesla as the technological pioneer planted the ‘technical seed’ in Croats because for a very long time, Croatia has been a source of great engineers and excellent IT & Tech universities. Croatian engineers invented the pen, water cannon, the zeppelin, the world’s first electric sports car, the torpedo, pay-by-phone parking, and much more. Nikola Tesla in his New York laboratory Croatia has some of the worlds most talented young engineers. According to the statistics from International Olympiad in Informatics , you could argue that Croatians are per capita the most talented engineers in the world. IOI is the most prestigious computer science competition in the world for secondary school students. The primary goal of the IOI is to stimulate interest in computer science and information technology. Croatia ranks very high in the total number of medals won and has the smallest population out of the top 15 countries listed. Therefore, ranks #1 according to the graph below. 2. Western Culture/Mindset Croatia oers a western lifestyle, and therefore, customers are spared the painful experience of time-consuming micromanagement. This is mostly because Croatia has been a top tourist destination for years, so Croatians are used to working with people all around the world. King Tomislav Square, one of many parks in the very heart of Zagreb Also, Croatia was part of Western civilization for centuries; The Kingdom of Croatia was within the Habsburg Monarchy for almost 400 years (from 1527 to 1918 to be exact). In the second half of the 20th century, after the whole of Eastern Europe was flooded by communism, Croatia was the only country in CE Europe who opened up to the US, stood up to Russia, and didn’t have an iron curtain regime. Again, that’s something that foreigners feel and appreciate when facing the Croatian mentality. Therefore you’ll often hear clients from Europe and the US saying how happy they are with the culture fit. 3. English Proficiency Croatians speak English very well. This is not an overstatement. The reason for such a high English fluency among Croatians is primarily the fact that English is a mandatory subject all the way through elementary school. Also, unlike many other nations, Croatians don’t translate movies, they just add subtitles to them. Since the vast majority of movies are in English, this is a huge contributory factor for the high level of fluency. Client workshop at Q agency in Zagreb According to EF ( Education First ), an international education company based in Lucerne, Switzerland, and their EF English Proficiency Index — The world’s largest ranking of countries and regions by English skills, Croatia is in the world’s Top 20 with high proficiency. 4. Top Tourist Destination Croatia is a country with just over 4 million people, located at the crossroads of central Europe and the Mediterranean — mostly known for its stunning Adriatic coast, which features 1200 islands and countless breathtaking tourist destinations like Dubrovnik, Hvar, Zadar, the Plitvice Lakes, and Krka among many others. Just do a Google search for ‘Croatia’ 🙂 5. Great Connectivity Croatia is generally very well connected and about 1-2 hours away from Europe’s largest cities. Back in 2017, a new airport terminal “Franjo Tuđman Airport” opened its doors and this naturally led to the introduction of countless new direct flights to all major European airports. Today, you are just a few hours away from London, Manchester, Zurich, Stuttgart, Berlin, Amsterdam, Stockholm, and Oslo. I am still working on a direct flight from Belfast!! Photo courtesy of the Oicial account of Franjo Tuđman Airport On March 6, 2019, Franjo Tuđman Airport was voted by the Airports Council International as the best airport in Europe in the category of up to 5 million passengers. 6. Time Zone The Central European Time (CET) zone makes Croatia very compatible to work with, not only with other European partners but US-based companies as well. The six-hour time dierence (occasionally 5-hours depending on daylight saving time) allows for a significant time overlap with the US east coast. Europe from space, via Pinterest Croatia’s capital, Zagreb, shares the same CET time zone as Amsterdam, Berlin, Brussels, Copenhagen, Luxembourg, Oslo, Paris, Stockholm, Vienna, Zurich, and more. 7. Croatian IT Scene The Croatian economy is very much service-based, and the IT sector is one of the most up and coming in recent years. When analyzing the Croatian IT scene, you’ll find many small to medium-sized software companies doing an excellent job and covering a wide variety of technologies. Therefore, in terms of specific technology skill-set, you can find it all — from web & mobile apps, UI&UX design to VR&AR, IOT and AI. Largest Developer Conference in South East Europe — Shift Dev in Split, Croatia Regarding the current economic situation — Croatia’s GDP growth in 2018 compared to 2017 increased by approximately 2.8%. A similar growth percentage is expected for 2019. Meanwhile, unemployment levels in Croatia are at a record low. 8. Rates According to Eurostat — the statistical oice of the European Union and their Wage-adjusted labour productivity ratio indicator, Croatian developers will get you the most ‘bang for your buck’. The research was published by Eurostat in 2018 and it clearly shows Croatians delivering the most value for money. Source: Eurostat 2018. If you’re in the software business, you are probably familiar as to how hard it is to discuss rates when you don’t have clear and concise project specifications. Croatian software developers are not the cheapest, far from that. If you want cheap, you should probably think about Southeast Asia. However, the rates for Croatian developers are still very competitive in comparison to local providers and freelancers in Europe’s largest cities. That being said, you’ll find a seasoned senior developer in Croatia at the same rate as a junior-mid developer in London, New York or Zurich. Therefore, if you are looking for a new software development partner, you should seriously consider Croatia as your next destination. Not just because of the countless tourist attractions, but instead because of the marvelous software developers whom you will encounter. Kim Johnston Kim is British, and resides in Belfast UK, and has also lived in Croatia, learning the language, and later working closely with Croatian companies on a daily basis. Kim has almost 30 years of professional business experience. She is currently the UK Vice President at Q agency, one of the leading custom-made software firms in Europe headquartered in Croatia. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 28, 2023 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 28, 2023 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Again in the Top 3 fastest growing companies in Central Europe - Tech Consulting and Software Engineering URL: https://q.agency/blog/again-in-the-top-3-fastest-growing-companies-in-central-europe/ Q ranked among the Top 3 fastest-growing technology companies in Central Europe, achieving 3,894% growth and becoming the highest-ranked Croatian company. Again in the Top 3 fastest growing companies in Central Europe | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Again in the Top 3 fastest growing companies in Central Europe Again in the Top 3 fastest growing companies in Central Europe October 29, 2018 — 1 min read With a growth of 3.894% in the last 4 years, we are the 3rd fastest growing Central European tech company and the best ranked Croatian company ever! Last year we came 2nd with a growth of 2.446% as a “Rising star”, but this year we were upgraded to the main category. The Deloitte Technology Fast 50 is a program that recognizes and profiles the fastest growing technology companies while celebrating innovation and entrepreneurship. We are more than proud for our success and would like to thank all Qumans for making this possible. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 29, 2018 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 29, 2018 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Client-Agency Collaboration Co-creates Value — Moving Beyond Just Delivery - Tech Consulting and Software Engineering URL: https://q.agency/blog/agency-client-collaboration-cocreating-value/ How does agency-client collaboration co-create value and moves beyond just work delivery in today's digital world? How Client-Agency Collaboration Co-creates Value — Moving Beyond Just Delivery | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Client-Agency Collaboration Co-creates Value — Moving Beyond Just Delivery How Client-Agency Collaboration Co-creates Value — Moving Beyond Just Delivery September 29, 2025 — 7 min read We’ve come to a point where digital is no longer optional. It’s the standard. And yet, many organisations struggle with the amount of value delivered by their tech departments. Even when they invest very high effort, the delivered solutions are often misaligned with the business goals. The projects run over budget, last much longer than initially planned and features don’t get delivered in required scope. This is where a good quality client-agency collaboration comes in useful , to say the least. So the solution to this problem is having the alignment between technical deliverables and business goals. For agencies, this alignment is not just the best practice, it’s the most important part of the long term relationships with clients. This is how it is achieved. Building Relationships With Clients For a long time, the partnership between clients and agencies was based on mutual agreement of delivering a set of tasks with little opportunity to contribute strategically. Agencies’ main goal was to deliver on time and within the budget. But in that process, they rarely considered the client’s business goals and how to achieve them. Once the project was delivered, accountability would often end there. Agencies weren’t expected to do any measurements, check KPIs or stay long enough to see the impact of their work. They would just hand off the work and move on to another project. When they consider an agency, clients look for a partner who can understand their needs and problems, and help them get to the business outcomes they want. They don’t need someone to tell them what to do, they need an ally, someone who can bring knowledge , experience and most importantly a creative mindset, to help them create value . To respond to these changing expectations agencies started changing their approach, by integrating them into client teams. That way they contribute with strategy, problem solving and improved ways of working. This shift led to increased ownership and accountability from both sides. The partnership also changed the meaning of success. Clients moved away from measuring only what was delivered, and started identifying if the agency contribution made a difference to their overall business. Agencies are no longer vendors hired to do the work, they become partners helping shape the client’s roadmap . Let’s see how this new way of working creates change for both sides. Implementing Co-Creation in Practice Co-creation is a way of working where, instead of operating on opposite sides of the table, both parties sit together to define problems and design solutions. The process is less about passing requirements back and forth and more about working together. In practice, this means agencies bring more than technical knowledge. They contribute with their insights from other industries, share best practices and challenge assumptions when needed. Clients, on the other hand, bring knowledge about their business, customers, and strategy. When these perspectives are combined, the outcome is a better product . Co-creation is tightly related to iterative ways of working. Rather than trying to design the perfect solution upfront, agencies and clients work together in an agile way , to deliver something at the beginning, inspect it and move on incorporating the new knowledge in following iterations. This way agency experts, business stakeholders and end users are part of the solution. So, this raises a question: what does success really look like in this partnership model? How to Measure Success? In the traditional model, success was measured by whether the work was delivered on time, within scope, and on budget. Even though those factors are still important, meeting them all doesn’t guarantee the project will make an impact on the client’s business. In a co-creation model , it is not about the outputs the agencies produce, but the outcomes the clients identify while working with the agency partner. Launching a product doesn’t necessarily mean success. It becomes successful when it increases engagement, number of users or overall user experience. For agencies, co-creation deepens relationships. Rather than being seen as replaceable vendors, they are pictured as trusted and reliable partners . When agencies position themselves that way, the work they do leads to creating a long term value. So what practical steps can clients and agencies take to make it work? Moving Toward Co-Creation Creating the co-creation model requires time and effort. It doesn’t happen overnight, it requires a mindset shift and engagement from both sides. Creating augmented teams . When agencies work side by side with client employees, they know the context, understand business needs and can contribute more effectively. Sharing goals and success metrics – both sides should agree on what outcomes are important and what needs to be achieved. Working remotely and staying connected – agencies and clients are connected through daily collaboration and meeting in person whenever the situation calls for it. Regular opportunities for collaboration – agile ceremonies and discovery sessions allow agencies and clients to work transparently and keep everyone aligned on priorities. Transparency in communication – agency experts are comfortable raising concerns and suggesting improvements and clients are able to communicate clearly their capabilities, timelines and priorities. Feedback culture – clients should be able to provide honest feedback, so that agencies could improve their approaches and ways of working. Iterative delivery – this approach reduces risk, ensures adaptability, and creates value early in the project. So what does this partnership model actually look like in real life? Q and Building Relationships With Clients The approach that Q takes when working with clients is to position ourselves as a partner , providing not just the people and expertise, but strategic support as well. The client Q’s been working with earlier had different vendors and each of them delivered their part, but no one was accountable for the end to end solution. The result was duplication, partially implemented functionalities and the code that wasn’t maintainable. So the client decided it was time for a different approach : instead of managing several external vendors, they wanted one trusted partner. They looked for an agency that could go beyond filling resource gaps and integrate fully with their teams, share responsibility for outcomes, and help shape strategy. When Q agency stepped in, we didn’t just bring in people, we brought their mindset and different skills. Our experts joined client teams directly, collaborating daily to plan and deliver the value to the business and end customer. We didn’t operate in isolation but worked together to plan and refine the work . Our agency experts joined planning sessions not only as participants but as facilitators, helping the client’s teams clarify priorities, refine scope and align on business goals . We contributed to roadmap creation, ensuring that short term goals are connected to the product vision. Technical experts stepped in to inspect architecture and suggest improvements, bringing in their perspective and knowledge to help the client build a strong foundation for the future initiatives. Other team members looked for risks and additional opportunities to create higher value and deepen the relationship with client. What made the partnership successful was not only the technical knowledge that Q has, but also the flexibility, adaptability and transparency in communication . Experts started sharing the same responsibility for the value business wanted to achieve, and shifted the focus from individual tasks to business outcomes. Over time, this model grew into true collaboration, where everyone felt like they were part of the same team and organisation. Q agency wasn’t just another vendor, we became a trusted partner with real impact on client’s success. Conclusion Co-creation model is the future of client-agency relationships. It allows agencies to contribute strategically, ensuring that tech solutions and business initiatives are all aligned. This results in projects that deliver measurable value and long term results . Additionally, agencies that adopt a co-creation model can differentiate themselves in the market. They become strategic partners, trusted consultants, and problem solvers . This type of integration strengthens agency and client relationships and enhances the agency’s competitiveness. In the end, co-creation is not just a model, it’s a mindset. Agencies and clients who work this way will continue building solutions that are important for their future business. Partnership is a two-way street. And we’re here to be your partner, so contact us if you want your business to have more impact and success! Irena Cvetic Irena is our Engineering Lead with years of experience in the BA area who likes exploring and learning new things through every day work and communication with others. In her free time she enjoys reading different kinds of books, listening to the latest music hits and drinking good coffee. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 29, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 29, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Agentic Sprint: Proving the Value of AI - Tech Consulting and Software Engineering URL: https://q.agency/blog/agentic-sprint-proving-the-value-of-ai/ Most companies don’t need an AI strategy. They need one validated AI use case. Learn why we created the agentic sprint to make AI practical. Agentic Sprint: Proving the Value of AI | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Agentic Sprint: Proving the Value of AI Agentic Sprint: Proving the Value of AI June 24, 2026 — 6 min read Every company is under pressure to “do something with AI”. Most already know where AI could create value, automate manual workflows, accelerate operations, reduce bottlenecks, or improve decision-making. The challenge isn’t ambition. It’s proving whether an AI use case can deliver measurable business impact before investing months of time, budget, and internal resources into a full-scale build. That’s exactly what the Agentic Sprint is designed for: validating real AI workflows in real operational environments. Quickly, pragmatically, and with measurable outcomes from day one. Most AI initiatives don’t fail because the technology doesn’t work. They fail when operational reality hits: Wrong use case Unclear ROI Undefined production path Scoping takes too long Poor data quality No operational ownership According to Gartner, 40% of agentic AI projects will be cancelled by the end of 2027 due to unclear value, cost overruns, and inadequate risk controls. That’s why we created the Agentic Sprint . A fast, focused way to validate whether AI can solve a real business problem, before committing to a full build. From AI Idea to Working Prototype in 10 Days The Agentic Sprint turns AI ambition into a working prototype in just 10 working days. Fixed scope. Fixed fee. No lock-in. No endless workshops, no vague experimentation, nor drawn-out discovery phases. Just one focused use case , tested against real business conditions. By day 10 , you leave with: A working agent prototype on your data Metrics measured from day one A defined path to production A clear go / no-go decision As we like to say: You leave with a decision, not a maybe. How the Sprint Works Every Agentic Sprint follows a simple three-phase structure focused on one goal. Proving whether an AI workflow can create measurable business impact in a real operational environment. In just 10 working days, companies move from use case validation to a working prototype tested on real workflows, data, and business constraints. 1. Frame DAYS 1–2 We identify the right use case, define measurable metrics, validate data availability, and confirm technical feasibility. We don’t build until the case and the data are real. 2. Build DAYS 3–8 We design and deploy a working AI agent prototype using your workflows, data, and environment. Not a scripted demo, not a proof-of-concept built on clean sample data. A working prototype you can actually pressure-test. Depending on the use case, the sprint can include: Workflow automation Document analysis Knowledge agents Decision-support tooling Multi-agent collaboration Human-in-the-loop approval mechanisms The goal is simple: prove whether the workflow creates real operational value before scaling it further. 3. Prove DAYS 9–10 We measure the prototype against the KPIs defined at the start of the sprint. You receive: Measurable results A production roadmap A clear recommendation for next steps Whether the answer is “scale it” or “stop here”, you gain clarity fast without months of uncertainty. What This Looks Like in Practice Here’s what the Agentic Sprint looked like in practice with our two enterprise clients, as shown in the following two case studies. From identifying operational bottlenecks to building working AI workflows and measuring real business impact in just 10 working days. 1) Building a Knowledge & BA Agent at Enterprise Scale The enterprise company completed the Agentic Sprint that involved a product and engineering team struggling with slow product discovery workflows. And the bottleneck wasn’t engineering . Senior product managers were losing time chasing context across Jira, Confluence, and Teams threads with the business department before features could even enter development. Each feature request took an average of 11 days to move from raw request to approved specification. KPI: Reduce discovery cycle from 11 days to 6 days. Q built a Knowledge & BA Agent integrated directly into the client’s existing tooling with agent drafting full specification + human gate. The result tested against 20 real features: Raw feature requests automatically converted into structured specs Acceptance criteria and edge cases generated automatically Human review built into every approval step Discovery cycles reduced from 11 days to just 4 Across more than 250 backlog items, the client identified the potential to recover approximately 1,750 senior PM days annually. Not through replacing teams. Through removing operational friction. 2) Multi-Agent Due Diligence for a US Private Equity Client A US private equity client engaged in the Agentic Sprint with Q to solve the process of aggressive M&A timelines . Their legal and financial due diligence process was largely done manually using an expensive 3rd party tool that was difficult to scale, and they often operated under demanding deadlines. Analysts were spending days reviewing large volumes of documentation under tight investment windows, creating bottlenecks and increasing the risk of missing critical findings. Agentic Sprint was focused on fully automating one manual process end-to-end using agents and n8n for workflow automation capable of: Document ingestion Analysis of specific legal documentation Finding discrepancies between documentation Automated risk flagging Human-in-the-loop validation The result: Duration of analysis reduced by 64% Faster analyst throughput Lower operational risk This proved that the investment in the proprietary multi-agent AI system could replace the current expensive 3rd party tool with better results . The system didn’t replace analysts. It amplified them. Instead of spending time buried in repetitive document review, teams could focus on strategic judgment and faster deal execution. Why Companies Choose Agentic Sprint The most valuable AI systems today aren’t standalone chatbots. They’re embedded into workflows, connected to operational systems, and designed to solve specific business bottlenecks . Companies use Agentic Sprint to: Validate AI use cases fast Reduce investment risk Identify real operational ROI Automate manual workflows Accelerate internal buy-in Move from experimentation to execution The goal isn’t AI for the sake of AI. It’s measurable business impact . Why Q A two-week sprint is easy to copy. What stands behind it is not. At Q, AI agents are already embedded into our own delivery workflows across engineering, QA, analysis, and operations. Every engagement is backed by: Production-grade engineering teams Private AI infrastructure Human-in-the-loop governance A clear path from prototype to deployment Your data stays yours. No client data ever touches public AI tools. The Fastest Way to Understand AI Value Is to Test It Eventually, every organisation reaches the same point: they need to see AI work inside their own business. That’s exactly what the Agentic Sprint is designed for. One use case in, a working agent out. And a clear path to production. Have an AI Use Case You Want to Pressure-Test? If your organisation has: Repetitive workflows Document-heavy operations Manual analysis bottlenecks Processes slowed down by fragmented systems we’d love to explore it with you. Bring us one workflow. We’ll show you what an AI agent could do with it. Get in touch with the Q team to book an Agentic Sprint discovery session. Hrvoje Gorajscan As CEO of Q, Hrvoje, also known as Harry G, focuses on building digital products that matter and partnerships that move the business forward. His role is to keep shaping a company where strategy, technology, and design work together naturally, with a clear focus on lasting value. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 24, 2026 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 24, 2026 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Agility as a “buzzword” or useful business philosophy? - Tech Consulting and Software Engineering URL: https://q.agency/blog/agility-as-a-buzzword-or-useful-business-philosophy/ Explore how Agile goes beyond a buzzword, helping businesses adapt faster, improve collaboration, and transform their mindset and culture. Agility as a “buzzword” or useful business philosophy? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Agility as a “buzzword” or useful business philosophy? Agility as a “buzzword” or useful business philosophy? April 7, 2020 — 5 min read Agile meetup in Q announces a turnaround in business Q has recently organized, in collaboration with the Agile Croatia Meetup, a record-breaking event on the topic of “Agile Perspectives” in their Zagreb headquarters. The panel discussion was attended by more than 100 experts and young innovators involved in the agile community, as well as those who are yet to discover the potentials of this approach in business. This type of project management is a trend in many industries around the world today. Compared to traditional business understandings, agile means flexibility, adaptation and revision of short-term goals against long-term and strictly defined plans. We can say for agility that it is actually the attitude, the mindset and ultimately, the culture of a company. Agile transformation across industries has been revealed to us by panelists who have successfully implemented this methodology in their business environments. First of all, Nikola Zinic (Creative Director at Bruketa&Zinic&Grey), then Dalibor Jurgec (Co-Founder of Q), and Mladen Baresic (agile coach from Zagrebacka banka). The panel moderator was Josip Barisic , who is also leading the new agile education in Q. “We have exposed attitudes and practices from a financial, marketing and IT perspective to answer various questions such as the prerequisites necessary for the success of an agile transformation, what are the motives for the transformation, what are the reasons for failure, how large and smaller organizations behave through this transformation and many more. Although our panelists come from dierent industries, an agile approach to business, a constant change of culture, and partnerships with clients and employees, are the main features that are common to all “ — notes Josip Barisic. Agile transformation involves changing the mindset Time for QA Nikola Zinic explained the reasons and motivation for entering the transformation: “It came naturally to us. The old model we had no longer gave us good results, we became sluggish, and the mode of communication changed. First we waited for the client to define the problems, then we waited for a brief from the client, which you then returned, redefined, etc. This is a “waterfall” or “ping-pong” approach. Our ultimate motivation was to be faster and more eicient. ” Dalibor Jurgec emphasized that they have been working in an agile way for a long time: “There comes the time when you realize that you are agile, and then it needs to be formalized so that business processes and procedures can be developed. Agile mode should be tailored to your needs by first changing your company-wide mindset. In the end, it’s important to deliver what the customer wants, not what you think he wants. Help him get what’s best for him at that moment. “ “One cannot start doing this mode overnight. You may not have enough capacity to monitor change, and the opportunity to truly learn can be easily missed. It is important to start slowly and slightly raise the ladder and expand the range of activities, ”said Baresic, an agile coach at Zagrebacka banks. “We turned to Agile when we realized that we had problems with the complexity and culture of the organization, which was most evident in the diiculty in prioritizing and implementing project initiatives and in some of our communication patterns,” Baresic adds. When asked why agile fails in some systems, Zinic replies: “Generally, I think it’s a question of the mindset of people. Younger companies are more successful in this, they have grown up in an environment that is part of their culture, unlike companies with a long history. People are not used to failing, and then learn from it. Let’s say we work with Coca-Cola, which is a large system for two years in an agile way. They are very fast now and they are making a quick decision. ” Today’s business depends on its ability to react quickly and adapt to its environment Full house at Q Expert Traveler is one of the agile projects of Q with which they started the transformation. Through this collaboration, they have developed a travel platform for NewsUK, one of the UK’s largest publishers with several well-known brands such as The Sun and The Times, which today oers travel services to audiences across the UK through Q’s web solution. “The project itself was specific, we had various challenges that we faced. From a very short deadline to developing the whole idea and business solution, changing the Product Owner by the client, learning and learning about the methodology, and finally the special challenge of breaking into the saturated marketing market. We started the initial phase of the project through a workshop with a client, then we did a discovery phase which allowed us to create business logic and solutions. We then defined user stories and continued to develop design & development through biweekly agile sprints. The added value of the project is certainly obtained through quality feedback from the client as well as from the actual users. The focus on results has enabled us to achieve the project on time, and through communication and transparency we have achieved excellent cooperation ”- Dalibor Jurgec further explains the agile process in Q. “If one chooses to be agile, it should go full heart. Some see agile as light at the end of the tunnel, but this is not the solution to all problems. It needs to be persistent, changing and adapting, because business ultimately depends on adaptation. Ultimately, we all need to speak the same language, which is why in Q we focused on education and training for agile mode. This panel is just the beginning, and with great interest, we will definitely plan the next event already in the spring ”- finally says Dalibor Jurgec. Dalibor Jurgec, Nikola Zinic, Paula Sandrk, Josip Barisic, Mladen Baresic Marta Juricic She is a marketing and PR enthusiast responsible for developing, implementing, and executing strategic marketing plans. Classy girl with a bit of hood in her, and an attitude which she loses when there’s a dog nearby. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 7, 2020 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 7, 2020 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI Agents vs LLMs: What's the Real Difference in Enterprise Use? - Tech Consulting and Software Engineering URL: https://q.agency/blog/ai-agents-vs-llms-whats-the-real-difference-in-enterprise-use/ AI agents vs LLMs — what's the difference, and why does it matter for your business? Check it out in our latest blog post! AI Agents vs LLMs: What's the Real Difference in Enterprise Use? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > AI Agents vs LLMs: What’s the Real Difference in Enterprise Use? AI Agents vs LLMs: What’s the Real Difference in Enterprise Use? September 17, 2025 — 4 min read AI agents vs LLMs — what’s the difference, and why does it matter for your business? While large language models (LLMs) like GPT-5 are great at generating text, it’s AI agents that truly drive value in real-world enterprise scenarios. This was the key theme at the first-ever Q Leadership Breakfast — an exclusive industry event where we brought together top leaders from different Croatian sectors to discuss how AI agents are transforming business operations and shaping the future of autonomous agents in software development . Setting the Stage: Why Leadership, Why AI, Why Now? The morning began with a welcome from our CEO, Harry , who introduced the series as a space for leaders to connect, share experiences, and discuss the role of AI in real-world business transformation. This first edition focused on AI agents , a topic our community specifically requested. With McKinsey and Gartner both naming them among the top technologies for the next 3–5 years, and with EU regulations underway, the time to act is now. AI agents are no longer just a trend. They’re enabling real gains in efficiency across pre-sales, resourcing, and customer support. More importantly, they’re forcing leaders to rethink team structure, autonomy, and responsibility in increasingly AI-driven business models . From Buzzword to Business Value Our Director of AI, Zlatko, showcased how Q is using AI agents in production — not just as tech demos, but as critical components of our clients’ digital transformation with AI. Here are just three examples of how AI-driven business models are already creating measurable impact in Q: Travel Quotation Automation What used to take hours is now done in under 5 minutes , thanks to 13 specialised AI agents that handle everything from anonymisation to price calculation. AI-Powered Invoice Processing By automating over 90% of the process, this system delivers invoice extraction and prediction with 85%+ accuracy , reducing time to just 2 minutes per invoice. Estimation Tool for Software Projects One of the newest tools in our AI toolkit, this GenAI-based estimation assistant can read documentation and produce project cost/time estimates in seconds. With advanced prompt engineering and domain-specific tuning, it significantly accelerates pre-sales workflows while improving accuracy and consistency. Each use case clearly demonstrates that AI agents go far beyond what traditional LLMs can do — by adding memory, goals, planning, tool usage , and tight integration into business systems. Q Leadership Breakfast 5 Key Lessons for Successful Enterprise AI Adoption For companies looking to implement AI agents, here are the five most important takeaways from the event, with clear, actionable guidance: 1. Understand the Difference: AI Agents ≠ LLMs LLMs are reactive — they generate responses when prompted. AI agents are proactive systems. They use LLMs as a base, but add layers on decision-making, memory, and actions. This makes them suitable for end-to-end automation, especially in complex enterprise workflows. 2. AI Readiness is Everything Many AI agent initiatives fail because organisations don’t have AI-ready data, clear business goals, or defined success metrics. Before you start building agents, assess your internal systems, data quality, and team alignment. 3. Think Beyond the Pilot A working prototype isn’t a success. Enterprises must plan from pilot to production, including architecture, data pipelines, compliance, security, and governance. Otherwise, even promising PoCs end up abandoned. 4. Build Trust and Transparency Internally For AI adoption to scale, stakeholders must trust how AI decisions are made. That means clear communication, explainable outputs, and training for non-technical teams. A trusted system is an adopted system. 5. Start Small — But Make It Strategic Don’t boil the ocean. Choose one high-impact, low-risk use case (like travel quoting or invoice processing), prove value, and scale from there. Tie every pilot to a measurable KPI and business outcome. Want to join the next event or learn more about how Q implements AI agents in the enterprise? Let’s talk . Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 17, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 17, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI Compliance in Saudi Arabia: What Every Enterprise Needs Before Deploying Generative AI - Tech Consulting and Software Engineering URL: https://q.agency/blog/ai-compliance-in-saudi-arabia-what-every-enterprise-needs-before-deploying-generative-ai/ Explore key AI compliance requirements in Saudi Arabia and what enterprises need before deploying generative AI safely and responsibly. AI Compliance in Saudi Arabia: What Every Enterprise Needs Before Deploying Generative AI | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > AI Compliance in Saudi Arabia: What Every Enterprise Needs Before Deploying Generative AI AI Compliance in Saudi Arabia: What Every Enterprise Needs Before Deploying Generative AI June 1, 2026 — 11 min read For this article, we talked to Dr. Shaista Hussain from Saudi Arabia , Founder & CEO of SAIF CHECK , our partner company Q has recently started collaborating with in the field of AI risk assessment, compliance and model evaluations. With Dr. Shaista’s expertise in AI cybersecurity, agentic AI evaluations, API, and quantum AI security, rich experience, and daily work with her organisation facing these challenges, we got a practical insight into what is often lost in theoretical discussions: how this topic looks like in a real business environment. Dr. Shai’s answers served as an excellent foundation for this blog post. Through this interview, our goal was to open up space for concrete answers, real-world problem solutions and decisions that companies have to make today. 1. Why AI compliance is becoming a strategic business challenge in Saudi Arabia right now This year, 2026, has been declared as the Year of AI in Saudi Arabia, and that means that AI services are recognised as integral parts of working systems and evolving rapidly , but with governance and licensing requirements. Adopting new technologies during this digitisation era comes with technical and legal challenges that must be overcome with knowledge acquisition and upskilling. To guide this process, SDAIA (Saudi Data and AI Authority) as a regulatory agency, is enforcing the PDPL (Personal Data Protection Law) and is layering it with other data management and ethical practices that establish a foundation for data, model accountability, transparency, human-in-the-loop decision making and risk management. This adds another challenge of requiring companies to shift towards high-level enterprise-grade systems to process big data, meet the goals of Vision 2030 and subscribe to all regulatory requirements. This is all happening so quickly, that the digitisation efforts are happening in tandem with rapidly growing AI technologies being adopted by the stronger competitors in the market, e.g. those embracing agentic systems over legacy AI are likely seeing increased workflow efficiency but also occult and unknown festering risks. SAIF CHECK’s work with enterprise companies in the GCC has consistently shown that most AI users and product owners are largely unaware of neither the risks nor the compliance requirements, despite a reported 98% of Saudi public sector workers having adopted AI tools into daily use. At the organisational level, there remains a gap in the knowledge and implementation of essential new practices like audit logs and trails, how to accurately classify data, incident response management and risk aversion pre- and post- deployment. For AI companies supplying services to government entities, AI governance controls are requirements and this changes the traditional approach of software integration into work systems. So to win contracts, avoid penalties and fines, compliance with governance frameworks have been rapidly initiated into the corporate system. 2. Biggest misconceptions about Generative AI compliance In my experience, the commonest, most worrisome misconception is that having a draft or template policy churned out by a GPT makes a company compliant and safe. It doesn’t. Policies and protocols are instruction booklets that should be custom designed for each company and be part of ongoing staff training to be implemented in daily operations. Another huge misconception is that relying on brand-name products indemnifies people and organisations from safety and security practices; ie. “We use Microsoft Co-Pilot,” or “We built all our customer facing apps on ChatGPT, so we are protected and anything that goes wrong is their fault not ours.” But in reality, corporate accountability includes selecting 3rd party models , and determining the safe flow of data, particularly PII (personal identifying information) and sensitive information. And off-the-shelf models are not vetted for regional and often even industrial compliance standards. Without a SAIF CHECK risk assessment, enterprises often miss how these tools interact with their unique datasets , and falsely cover staggering gaps in security, leading to ‘Shadow AI’ complications, where employees use unauthorised tools that leak proprietary data into the public domain. Other areas of lack of knowledge that lead to misconceptions include the inevitable drift of AI models , the changing nature of integrations and APIs, and the frequency of compliance requirements per model iterations. When we describe our services, many people wonder why we have integrated compliance with AI cybersecurity and data/model evals and the reason is simple – they are all connected to oversight, accountability and responsibility, particularly in the data realm. 3. Saudi regulations, frameworks, and authorities enterprise leaders should be paying attention to The most important and mandatory authority frameworks are: 1. SDAIA : for PDPL, AI Adoption Framework and the upcoming Responsible AI policy 2. NCA (National Cybersecurity Authority): for Essential Cybersecurity Controls (ECC) and Critical Systems 3. NDMO (National Data Management Office): for proper data classification, lifecycle and sovereignty SAIF CHECK monitors all these frameworks and the ISO42001 and NIST RMF which are becoming the de facto compliance markers in the region. 4. How AI governance in Saudi Arabia differs from Europe or the US Around the world, different regions are rolling out governance in different ways, and the approach in Saudi Arabia is, in my opinion, the most logical and practical approach. In Europe, the AI Act has set the stage for regional governance through laws and penalties, while the Americans have both state-specific legislation as well as a changing landscape from the Federal mandates that largely consider corporate giants. Saudi Arabia is more focused on integrating digital governance into the commercial practice , while considering cultural values. Another differentiator for the Kingdom is the ambition and pace of roll-out. The authorities are both adopting and regulating AI, setting the benchmark for other companies to follow. This also means that the government system actually understands how regulations impact AI operations, because they are actively using the technology. SAIF CHECK’s selection of frameworks is principle-based and flexible to adapt as Saudi regulations evolve. 5. Biggest compliance risks when deploying LLMs or Generative AI tools internally The architectural nature of Language Models and Generative AI is different from other AI systems, and therefore the knowledge base retrieval process and the data output processes inherently carry their own set of unique risks, particularly in data compliance. The biggest risk is in adversarial attacks through prompt injections which can give bad actors access to databases that often host personal information like names, financial information, business strategies, confidential contracts and the prompts can not only access this but also manipulate it to affect hosted data and the data output from the models. SAIF CHECK’ Top 8 Attack Vectors publication identifies the specific ways AI systems are targeted: prompt injection, data poisoning, model inversion, and adversarial inputs. In this same field, hallucination outputs that sound articulate but carry false-information create a data risk. This is why SAIF CHECK’s Data Quality and Security as well as the LLM-specific evals are crucial, as the enterprises using the AI systems are accountable, not vendors or 3rd party suppliers. Other risks are revealed as models degrade, algorithms carry developmental biases, and data leakage or shadow AI threatens data security and compliance. Finally, there is the AI agent risk dimension . As organisations have started using chatbots and now autonomous AI agents that take actions, the compliance and liability surface has expanded. AI security posture is a different species from traditional IT security which is simply not adequate to cover the scope of safety and security in AI systems. 6. What responsible AI actually means in practice for enterprise organisations Responsible AI is an umbrella term that covers human-centric, data-centric, explainability, transparency, accountability, end-user fairness and safety and product security. It involves having clear, operationalised policies associated with tool inventory and clearly defined roles and responsibilities. From a data-centric perspective it heavily focuses on “Bias in-Bias out” management, and from a human-centric perspective it includes reinforcement learning, human oversight and humans-in-the loop. Transparency means that end-users are clearly informed about the extent of the capabilities of an AI tool, and explainability is the process of revealing black box logic to end-users of the tools. Management responsibilities include risk-tiering the AI systems, and ensuring comprehensive documentation of activities, features, operations and 3rd party / API contracts. For engineers, the responsibility should also include evaluations of drift and malicious interference, and having a service provider to support incident responses, such as SAIF CHECK’s War Room that assists users through the remediation of adversarial mitigation and SAIF CHECK’s Responsible AI (tech due diligence) assessment. 7. What enterprises should assess before allowing employees to use public AI tools This is a topic of heavy importance, especially as AI adoption is becoming mainstream. There should be organised assessments occurring at scheduled intervals to keep companies safe from these off-the-shelf tools, namely, continuous monitoring. Firstly, before adopting these tools into a workspace, a designated and accountable individual should be examining the data pipeline of the tools and make an executive decision about if company data can afford to be pushed through these tunnels or not; if PII is collected, then the answer is rather clear and 3rd party tools should not be used, and data packets should be classified into role-based-access categories. If vendors are to be used, then finely worded contracts and guardrails should be implemented to ensure PDPL compliance. Secondly, there should be some explainability of models with a final acceptance step from the human-end user to verify model outputs.  These processes will require staff training and this should be occurring internally, frequently. Thirdly, activities should be logged and recorded for audit trails, such that if an incident occurs, there are breadcrumbs to trace back to source; which is closely linked to the fourth recommendation which is to ensure a process of incident response. 8. Industries in Saudi Arabia under the most pressure to establish AI governance Infrastructure critical domain workspaces are under the most pressure , particularly because compliance is multi-lateral. For example, in healthcare there are now tech regulations as well as legacy HIPAA and other such governance models; in finance there are SAMA and international governance models that now intersect with the tech requirements; in retail there are specific NCA, GDPR, SOC2, transaction and now tech based regulations. 9. Most common gaps in enterprise AI readiness today In our experience, there are three commonly occurring gaps . Firstly, typically there is no responsible individual monitoring or taking inventory of AI tools being used and by whom. Secondly, there are few organisations that have appropriate policies and fewer that actually implement the policies. Thirdly, and this is so important for us, there are almost no companies opting to do responsible assessments for bias or fairness. It is remarkable to think that product owners are just ignoring such a crucial part of their customer-facing tools. Another huge mistake that happens so often is that IT and legal teams are managing AI safety and governance , where neither have training in managing AI systems and ultimately there is no continuous monitoring of these specific systems. Finally, there is a skills and capability gap, where training seems to focus on how to use AI rather than how to use it safely and responsibly. 10. Balancing innovation speed with regulatory and security requirements Organisations should include responsible AI into the ideation phase and continue threading it throughout the MLOPs development process. This prevents having to backstep to correct previous model iterations. Beta testing with a select group of controlled users or in sandboxes is another way to build and stay in the know regarding compliance. Most companies are in a rush to start the races, to deploy without understanding what they are publishing and without knowing about the regulatory and other consequences of unvetted models. And since every model has a unique set of risks, tiering the risk levels of each model is super important. The partnership between SAIF CHECK and Q agency, announced May 2026, directly addresses this balance. Combining SAIF CHECK’s governance and compliance expertise with Q’s end-to-end AI delivery capability can help clients to build fast and build right simultaneously. 11. What a strong enterprise AI governance model looks like in practice Filing Cabinet: catalogued inventory of all AI tools and all AI activities Rule Books: enforceable policies and protocols that are directly mapped to roles with clearly defined responsibilities, accountability and regulatory compliance Documentation: audit logs and trails, incident response integrations, user level access to classified data systems Structure: having appointed individuals to manage human oversight and end-user interaction with AI systems, including training and incident response protocols Monitoring: security monitoring, pen testing, vendor risk assessments at scheduled intervals 12. Advice for CEOs and CIOs planning their first large-scale Generative AI initiatives in the Gulf Pace yourself and know the playing field. Don’t rush to deploy systems that you don’t understand and for which you cannot act as commander. Educate yourself on these systems and their risks. Employ service providers to guide you through safe and responsible development. Have accountability infrastructure established before jumping into product development. Nominate someone and study regulatory requirements like PDPL, and invest in people – train staff regularly on safe use and practices with AI systems. Before choosing a solution, define the problem and the data available , then think about what solution is best. Enable continuous monitoring, the adversarial landscape is evolving rapidly and in unseen blind spots that can tear down walls with one access point. Shaista Hussain Dr. Shaista (Shai) Hussain is the Founder & CEO of SAIF CHECK. With expertise in AI Cybersecurity, Agentic AI evaluations, API and Quantum AI Security, her work is focused on creating secure, innovative systems that address complex technological challenges, while helping organizations stay prepared, flexible, and ready for what comes next. Dr. Shai brings together AI and machine learning professionals to build practical solutions for real-world challenges in healthcare, education, and the environment. Her focus remains on using advanced technology to create meaningful change and address global problems through practical innovation. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 1, 2026 — 11 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 1, 2026 — 11 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI-generated Content — How Much Is Too Much? - Tech Consulting and Software Engineering URL: https://q.agency/blog/ai-generated-content-how-much-is-too-much/ In this blog post, we touch on the use of AI-generated content, its benefits, drawbacks, and its effect on page rankings, authority and SEO. AI-generated Content — How Much Is Too Much? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > AI-generated Content — How Much Is Too Much? AI-generated Content — How Much Is Too Much? March 7, 2024 — 7 min read Today, I asked ChatGPT to count the nutrients and calories in my breakfast because I didn’t feel like doing math. In the last year or so, we’ve witnessed that practically everyone started using ChatGPT, be it the free or the paid GPT4 version. This mega popular AI tool has brought artificial intelligence closer to us, ‘ordinary people’ and has made it a part of our everyday life when writing social media or website content. And many other things, like counting breakfast cals. But is the use of AI-generated content (AIGC) to an excessive extent beneficial, or on the contrary, harmful, and in what way can it affect our website rankings, its authority and SEO? Do search engines like Google penalize AI-generated content, or is it just a myth? Can all this ultimately harm your website? Let’s find out in this blog post. What are the advantages of AI-generated blogs? Efficiency When writing blogs, the first advantage of artificial intelligence compared to humans is that AI can write a blog post or some other type of content in a few seconds based on a prompt. This is certainly very helpful for those companies with websites that publish new content regularly, and in times of shortage of manpower, AI tools can be of great help. Cost-Effectiveness We live in times where budgeting is essential for all types of companies, be it small, mid or large enterprises. This is where AI-generated content gets handy as it decreases the costs of employing copy and content writers , especially when it comes to writing articles or blog posts that might be helpful, but aren’t creative or innovative. Data-Driven Insights Another way where artificial intelligence can be leveraged is that it can analyze large amounts of data in a very short time frame — much shorter than it takes humans to do the same — and ultimately lead to specific, well-targeted content. Using its algorithms, artificial intelligence is able to offer content that, in addition to being relevant, can also be very well adapted to the current preferences of the target audience . Brand Voice Consistency Even the most experienced writers sometimes struggle with maintaining a consistent brand tone and style that’s vital to its identity. And that’s why AI tools like ChatGPT , when given a high-quality prompt, can be of major help as they can without problem stay consistent and keep the brand voice in place . The Challenges and Drawbacks Creativity and Originality There’s no doubt that AI has many strengths, but when we talk about real innovation and creativity, this is where the problems begin. Artificial intelligence is undeniably great at rewriting or paraphrasing existing information, but when it comes to gaining some new insights, analyses or discoveries — which only humans can do — it is not at the level where we can say that it can easily replace us . Accuracy and Reliability Another drawback of AI is that machine-learning language models like ChatGPT don’t have the latest up-to-date information , but rely on the information available at that moment (currently the latest data that the paid version of GPT4 is based on go up to April 2023 — almost a year old), which may lead to incorrect or incomplete information. And that’s why a human review of content delivered by AI is more than important before publishing anything. SEO and Search Engine Perception When talking about SEO, search engines will always prioritize the content that it considers to be innovative, original and that provides value to the reader . A lot of things on the Internet today are just paraphrases of some already existing content, and there will be more and more of that given the availability of AI tools whose content is not original and innovative. And because of that, this content can easily be downgraded by Google or Bing, which ultimately damages the website’s search rankings . The Human Touch The lack of personal touch can easily make AI-generated content feel less relatable , and often does bring less engagement because of this. Human stories that only humans can tell come from experiences and a sense of connection that artificial intelligence cannot possibly deliver. For now. Ethical Considerations and Transparency Is the use of AI even ethical? People have been asking themselves this question nonstop. There are many available AI-generated-content checkers that can easily analyze if a certain article or copy is ‘powered by AI’. Whether it is or not, it’s important to disclose the use of AI for your audience to know. And consequently keep the trust in place between you and your readers. Impact on Website Ranking, Authority, and SEO Impact on Content Quality One of the problems with AI-generated content is that high-quality and original content that provides quality information is important for SEO . AI tools can be helpful in generating that sort of content, but they can’t always meet those quality standards. Relying solely on ChatGPT or other AI tools like QuillBot when writing content or copy results in them feeling generic and uninspired. Impact on User Engagement As mentioned earlier, articles, blog posts and other types of content written by AI usually struggle with having the same depth and insight into the information that a human has as the author. If the content doesn’t meet these standards and isn’t interesting to read, visitors spend less time on the page, and the bounce rate easily increases — therefore, website engagement metrics are more likely to decline due to content of lower quality , which in turn affects SEO as well. Search Engine Downgrades Search engines like Google have long had sophisticated algorithms that provide users with valuable content. In the last year, the number of AIGC has increased dramatically, but not all AIGC is of equal value and relevance. Some AI tools can create premium and high-quality blog posts, articles, etc., but they can also create lower-quality texts that search engines recognize as non-relevant. Which brings to the table the downgrading of content on your page and, consequentially, lower ranking in SERPs . However, search engines do not penalize AI-generated content by default, but they rather do so when detecting duplicate content . Therefore, one needs to be aware that the content created by an AI tool is not a duplicate, which can then lead to serious penalties, such as the search engine completely removing your page from its index and search engine results page . Being Transparent Is the Way to Go When using AI to assist with your content, we’ve already mentioned that it’s best to be honest and disclose its use in writing your texts. However, this mention can also affect the way search engines see your content and can deem it more relevant and trustworthy if you disclose the use of AI tools . For example, this paragraph was written with the help of AI. Take note, Google. Conclusion As we’ve seen, the use of artificial intelligence has its advantages and disadvantages, and these disadvantages can lead to problems with page authority and rankings due to bad SEO. However, we live in an era where generative AI can be used for various purposes, including the generation of various types of content — and this is where we need to find a middle ground between our own creative efforts and the AI-provided assistance . With a high-quality human ‘touch’ and the help that can be provided, for example by ChatGPT, content can be optimized, rank well in search results and not be compromised just because we used AI tools. The key is in finding the right balance between the efficiency of this ground-breaking technology and human creativity. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 7, 2024 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 7, 2024 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI Hype Is Everywhere, but It Won’t Replace a Good Project Manager - Tech Consulting and Software Engineering URL: https://q.agency/blog/ai-hype-is-everywhere-but-it-wont-replace-a-good-project-manager/ AI hype is everywhere in 2026, but it cannot replace a good project manager. Read this article to find out why. AI Hype Is Everywhere, but It Won’t Replace a Good Project Manager | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > AI Hype Is Everywhere, but It Won’t Replace a Good Project Manager AI Hype Is Everywhere, but It Won’t Replace a Good Project Manager May 26, 2026 — 8 min read AI hype is real, and AI is everywhere in 2026. Open any news portal, scroll LinkedIn for 30 seconds or just sit down in your favourite coffee shop. At some point, the conversation will land on AI. Someone used it to debug an issue, someone else to write an email, plan a workout or even interpret medical results. It’s no longer just another trend. It’s part of everyday work. And like with every big shift, the hype comes with a familiar narrative: AI will replace us. There won’t be jobs. Some roles won’t survive this. There’s some truth to that. Certain roles will change dramatically. Some will partially disappear. But many won’t be replaced. They’ll be reshaped. Project Management is one of them. And that shift is already happening, just not always in an obvious way. It’s not like the role suddenly looks completely different overnight. There’s no big announcement, no clear “before and after.” Instead, the expectations quietly change. What used to be enough: keeping things organized, making sure delivery runs smoothly, slowly stops being enough. And the difference becomes visible in small moments. How you run a conversation. How you react when things go off track. How well you actually understand what’s happening beneath the surface. The part of the job AI is actually great at If you look at what Project Managers spend a big chunk of their time on, it’s operational work: writing sprint reports summarizing meetings updating risk logs preparing client updates structuring scattered information into something usable Necessary? Absolutely. High-value? Not really. That’s where AI can help a lot. Today, you can turn raw notes into a structured report in minutes. You can generate MoM, extract risks, even get mitigation suggestions. But soon you can notice one thing: AI depends on the input you give it. Messy notes means messy output. No context will give you generic output. Half-thinking results in confident nonsense. And over time, another pattern shows up. Two PMs can use the exact same AI tools and get completely different results . One gets something generic. The other gets something sharp, structured and actually useful. The difference isn’t the tool . It’s how well you understand your own project. AI doesn’t replace thinking. It actually makes it even more important. Before, you could hide behind process, structure or just being “busy.” Writing report whole day, or even two days. Now, the quality of your thinking becomes much more visible: both to your team and your client. AI speeds things up. But it also makes it harder to hide. A small habit that changes the game One of the simplest things that made a real difference for me was keeping a lightweight project journal. Nothing fancy. Just quick notes during the day: what actually happened (not just what was planned) where things felt off tone of conversations decisions that didn’t feel fully “closed” When you feed that into AI, something interesting happens. It starts connecting dots. You get: risks you didn’t explicitly write down patterns you didn’t consciously notice mitigation ideas that are actually usable It doesn’t replace your thinking, it extends it. But you still need to review everything. Because yes, AI will still occasionally leave you with something like: “I can add one more sentence, just let me know :D” And that’s not making it into any serious report. So… if AI does this faster, what’s left? This is where the real shift happens. If AI handles reporting, documentation and part of the analysis, what does a Project Manager actually do? The part we kept postponing. The part we never had time for: people When delivery gets intense, one thing quietly disappears: real communication with the team. You think: “I’ll check in later.” And then you don’t. Meanwhile: someone is under pressure someone is frustrated but staying quiet someone is slowly burning out And it only becomes visible when delivery starts slipping. AI doesn’t fix that. But it gives you something you didn’t have before: time. Time you used to spend writing reports manually can now go into something much simpler: A quick call. No agenda. Just a question. “Hey, how are things actually going? Noticed you looked tired on the call today.” And those conversations don’t need to be long. In fact, they’re better when they’re not. A 15-minute check-in where someone says what they wouldn’t say in a status meeting. Those moments don’t show up in reports. But they often explain everything about how a project is really doing. Recently, I had a situation where multiple people in the team were struggling with client pressure and a way of working that didn’t align with ours. I didn’t have a solution ready. I couldn’t remove the pressure. But taking the time to actually listen, made a difference. Sometimes, being a Project Manager isn’t about fixing the problem. It’s about making sure the team doesn’t carry it alone . Someone (PM) is there to listen  to them and try to protect them. Client relationships don’t scale with automation The same thing happens with clients. When things get busy, communication becomes transactional: status updates deadlines blockers And that’s it. You’re delivering, but not really building a relationship. If AI is taking over part of the operational work, this is where that time should go. Because real value usually is outside of the backlog. What’s actually happening on the client’s side? What pressure are they under? What does “success” look like for them beyond delivery? That context rarely lives in Jira. Clients might not tell you what’s really going on. Not because they don’t want to. They sometimes just assume it’s not relevant. Or they don’t expect you to think beyond delivery. That’s why these conversations don’t happen by accident. They happen when someone intentionally steps out of “execution mode.” Where AI + PM actually create new opportunities These situations made me realize AI is more than just a productivity tool. For better understanding, I give you an example where the client kept mentioning the same issue over and over again: they didn’t have enough people to respond to user complaints and incoming messages. It wasn’t marked as a technical problem. It was a capacity problem. A customer experience problem. Something that was “known,” but never really addressed. From a delivery perspective, it would have been easy to ignore. It wasn’t directly blocking development. It wasn’t part of our backlog. It wasn’t urgent, just constant. Sorry client, this is someone else’s problem. At one point, we stepped back and connected the dots. Instead of just acknowledging the issue, we looked at the problem from different perspective: “We’ve noticed that a lot of user communication is repetitive and time-sensitive. Have you considered introducing a chatbot to handle the first layer of responses?” Now the conversation shifts. You’re no longer just: delivering features or reacting to problems You’re: addressing a business bottleneck improving customer experience proposing a scalable solution And the key part: this doesn’t feel like a random suggestion. This was a result from: repeated conversations observed patterns actual pain points That’s where AI + Project Management really meet. AI can support the solution. But recognising the opportunity, it still requires understanding the context. AI sees patterns. PMs see the bigger picture. AI is great at identifying signals. It can tell you: where things are slowing down where defects are increasing where risks are emerging But it doesn’t fully understand why . It doesn’t know: that a new team member just joined that priorities changed last minute that there’s internal pressure on the client side that no one is openly talking about A good Project Manager connects those dots. Not just logically, but realistically. The shift that’s actually happening What AI is really doing to Project Management isn’t replacement. If your role was mostly: tracking tasks writing reports organizing meetings AI might easily replace you. If that’s the case, the omnipresent AI hype might be even justified. But if your role includes: building trust understanding context asking the right questions navigating ambiguity Then AI becomes your partner. You’re no longer the person who needs to have all the answers. You’re the person who asks better questions. AI can generate options. But knowing what to ask , when , and who to involve , well that’s still human work. AI draws a clear line between coordination and ownership. Between someone who follows the process  and someone who understands what the process is trying to achieve. Final thoughts AI won’t replace Project Managers. But it will make something very clear: The value of a PM was never in the reports . It was always in: conversations that don’t happen in meetings decisions made with incomplete information relationships that hold things together when everything starts slipping AI can support all of that. But it can’t replace it. And maybe for the first time, Project Managers actually get the space to focus on what the role was always supposed to be about. Not managing tasks, but managing people and client relationships . Vinka Đurđević Vinka is a senior project manager with more than 12 years of experience in IT. She is a certified Scrum Master, PMP and Agile Practitioner with a background in software development and Salesforce. She enjoys working on dynamic projects and loves collaborating with teams to get things done. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 26, 2026 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 26, 2026 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How AI Transformed UX/UI Design - Tech Consulting and Software Engineering URL: https://q.agency/blog/ai-in-ux-ui-design/ Read more about AI, a set of technologies and techniques that can be leveraged to enhance various aspects of the UX/UI design process. How AI Transformed UX/UI Design | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How AI Transformed UX/UI Design How AI Transformed UX/UI Design October 11, 2024 — 12 min read What? Artificial Intelligence (AI) is reshaping the UX/UI design landscape, offering tools and techniques that enhance every step of the process. By integrating AI, designers can work more efficiently, optimize workflows, and create personalized, user-centered experiences. In this post, we’ll dive into how AI is making UX/UI design smarter and more intuitive, ultimately leading to better user interactions. User Research Personalization Design Automation Accessibility Prototype and Testing Visual Design Why? Using AI tools as a UX/UI designer offers several advantages that can significantly improve the design process and enhance the overall user experience. Efficiency Data-Driven Insights Personalization Accessibility Design Innovation Usability Testing Consistency and Scalability How? Incorporating AI tools into your workflow can enhance your design process and improve the quality of your designs. Using AI tools as a UX/UI designer offers several advantages that can significantly improve the design process and enhance the overall user experience. Identify Use Cases Research AI Tools Experiment and Learn Integrate AI into Your Workflow Collaborate with AI Specialists Stay Updated Evaluate and Iterate AI Tools AI tools streamline tasks like image editing, background removal, and content generation etc. By harnessing artificial intelligence , UX/UI designers enhance efficiency, creativity, and user experience, paving the way for more innovative and impactful designs. emojis.sh Wireframe Designer PhotoRooms aicolors.co relume Ipsum ChatGPT emojis.sh What? Why? How? emojis.sh is a tool tailored for designers, offering a comprehensive collection of emojis categorized for easy access. It simplifies the process of finding and copying emojis, facilitating their incorporation into design projects effortlessly. What? Why? How? Utilizing emojis enhances communication, adds visual appeal, ensures cultural relevance, and improves accessibility within user interfaces. Their universal language fosters engagement and understanding, contributing to a more immersive and inclusive user experience. What? Why? How? Access emojis.sh in your browser, navigate or search for desired emojis, click to copy, and paste them into your design software. Experiment with different emojis and iterate on designs to optimize user engagement and communication effectiveness. Wireframe Designer What? Why? How? The Wireframe Designer plugin is a Figma tool offering pre-built components for efficient wireframing. It simplifies the process by providing ready-made elements commonly used in UX/UI design projects, directly accessible within the Figma environment. What? Why? How? The plugin enhances efficiency by saving time in wireframe creation, ensures consistency with professionally designed components, offers flexibility for customization, and facilitates collaboration among team members using Figma’s collaborative features. What? Why? How? Install the plugin from Figma’s Community library, access components within Figma, select and customize elements as needed, assemble wireframes by dragging and dropping components onto the canvas, and iterate on designs collaboratively with team members for feedback and refinement. PhotoRoom What? Why? How? PhotoRoom is a Figma plugin employing AI technology to swiftly remove backgrounds from images. It simplifies the process, enabling UX/UI designers to create transparent backgrounds effortlessly, eliminating manual editing. What? Why? How? Enhancing workflow efficiency, flexibility, and consistency, PhotoRoom automates background removal, saving time, refining designs, and maintaining visual cohesion across interfaces. What? Why? How? Install the plugin, upload an image in Figma, use AI background removal, adjust if necessary, integrate the transparent image into designs, and iterate for optimal visual impact and user experience. Relume ipsum What? Why? How? The Relume Ipsum plugin for Figma provides UX/UI designers with a quick and efficient way to generate placeholder text directly within their designs. By offering customizable options for text length and format, it streamlines the process of populating content areas, saving time and enhancing the overall design workflow. What? Why? How? Placeholder Text Generation : It generates placeholder text (commonly known as Lorem Ipsum) directly within Figma, allowing designers to quickly fill in content areas without having to manually type or copy-paste text. Efficiency : Using the plugin saves time and effort, especially when designing mockups or prototypes where placeholder text is needed. Realistic Representation : Having placeholder text helps in creating a more realistic representation of the final design, allowing stakeholders to better visualize the layout and flow of content. Integration with Figma : Since it’s a Figma plugin, it seamlessly integrates into the design workflow, making it convenient to use alongside other design tools and features within the Figma platform. Overall, the Relume Ipsum plugin enhances the design process by providing a quick and easy way to populate content areas with placeholder text, ultimately improving the efficiency and effectiveness of the design workflow. What? Why? How? The 1st step To create our design and place Lorem Ipsum text in the designated areas for actual text. The 2nd step Find the plugin and run it. After that, select the desired screen and fill in the required fields within the plugin window (company name and description of what company does). Click the CTA button to generate the copy and wait for the results. Results Fail – Maybe not? The plugin did not recognize the navigation with three tabs. We believe that this part is still the responsibility of the designer to come up with names for individual tabs and sections within the page because this part pertains to UX and the logic of the application itself. Results Successfully done. For this part, we can say that it has been successfully completed. Of course, it should be emphasized that the text generated by this plugin is only the initial version of the text to help the client absorb the content and the designer’s idea more easily. The text definitely requires further refinement. AI Colors What? Why? How? AI Colors is an artificial intelligence tool that utilizes advanced algorithms to generate a color palette based on user-defined parameters or inspiration. It enables users to quickly create harmonious and aesthetically pleasing colors for their projects. What? Why? How? “aicolors” offers a quick, practical, and inspirational solution for generating color palettes, making it a useful tool for anyone involved in design or creating visual content. Quick color generation : The tool allows for rapid generation of color palettes, saving time for designers and enabling them to focus on other aspects of the project. Inspiration : “aicolors” can serve as a source of inspiration for UX/UI designers, helping them explore new color combinations and expand their creative range. Customizability : Users can adjust the parameters of color generation to suit the specific needs of their projects or personal taste. What? Why? How? We need to determine what kind of palette we actually need and for what purpose, and based on that we give clear instructions to the generator. Results Successfully done The generator has generated a 10-color palette in hexadecimal format that we can export. It suggested which color to use for the background, primary color, accent color, and text color. ChatGPT What? Why? How? ChatGPT is an AI-powered chatbot that can engage in conversations with users, providing human-like responses based on the input it receives. ChatGPT can be your best friend if you want it to be. You just need to learn how to talk to it and give it great prompts. What? Why? How? ChatGPT can greatly assist in app design, especially in the UX aspect of the job. It saves us time and gives us additional ideas that we haven’t thought of ourselves. We wouldn’t recommend relying entirely on this tool, but it can significantly help us in our work. What? Why? How? It’s very easy to use, functioning like a real chat where we can converse, ask questions, or give tasks for it to solve. The quality of the response depends on the quality of the written prompt. AI can significantly enhance the workflow and creativity of UX/UI designers in several ways, allowing them to focus on more strategic and creative aspects of their work. Here are some of the main ways AI can assist UX/UI designers: A/B Testing and Optimization AI can automate and enhance A/B testing by rapidly analyzing user interactions, helping designers understand which design elements work best. This optimizes the design for better user engagement and experience. Example : AI tools like Google Optimize or Adobe Target use machine learning to determine which design variations are performing better in real-time. Accessibility Improvements AI tools can automatically scan designs and suggest improvements to ensure they are accessible to people with disabilities, such as recommending color contrasts for visually impaired users or optimizing layouts for screen readers. Example : Stark is an AI tool that helps designers ensure their designs are accessible to users with visual impairments by checking contrast ratios and offering suggestions. User Research and Insights Artificial intelligence can assist in gathering user insights from surveys, social media, or feedback forms. It can analyze sentiment, behavior patterns, and pain points, helping designers refine their designs based on real user data. Example : Tools like UserTesting or Hotjar use AI to analyze user testing sessions or heatmaps to show how users interact with different parts of a website or app. Design System Management AI can manage and maintain design systems, ensuring consistency across multiple projects and team members. It can recognize inconsistencies in design elements like colors, fonts, or spacing, and suggest ways to align them. Example : Tools like Figma or Sketch can integrate AI plugins that help UX/UI designers keep track of their design system components and suggest corrections if inconsistencies appear. AI and the Future of Design Artificial intelligence has been excessively hyped in various industries, including design. Designers and developers are actively discussing AI and the future of design, exploring the potential effects of AI, Machine Learning, Deep Learning, VR, AR, and MR and how these advancements might reshape their roles and responsibilities. In this write-up, we will shed light on the present and future of AI in design by discussing the various aspects of design using AI. Understanding Design and AI The emergence of AI is shaping the design industry and raising questions among designers about the potential for AI to replace designers in the future! AI in the design process helps designers become more efficient and productive. AI-powered tools like DALL-E, Midjourney, Adobe Firefly, or Stable Diffusion automate tasks like concept art, visuals, high-res images, and custom graphics. They apply styles to images & explore unique visuals for design projects, freeing designers to focus on the more creative aspect of their work like ideation and problem-solving. In addition to automating tasks, design AI tools can also generate ideas and insights to create user-friendly designs. AI in design is to complex and expensive for small businesses Some advanced AI design tools may be expensive and complex, but there are also user-friendly and affordable AI-driven design applications accessible to small businesses and individual designers. These tools offer valuable features like automated layouts, image enhancement, and personalized branding, making AI a viable option for designers of all scales. AI in design is only helpful for repetitive tasks AI’s capabilities extend far beyond just automating repetitive tasks. AI can aid in data analysis, predicting design trends, generating personalized content, and assisting with complex design challenges. Embracing AI allows designers to focus on higher-level creativity and strategic thinking, leveraging AI as a powerful ally in the design process. AI-generated designs lack originality and uniqueness AI-generated designs can be creative and unique, but designers need to be mindful of the tools and data they use to avoid creating similar designs. Fine-tuning and adding creative input is essential to ensure the final result aligns with the project’s goals and vision. How will Creative AI Teams Operate? Human-AI collaboration Once teams overcome the hurdle of adopting AI into design workflows, the new normal will be human-AI collaboration. Designers will collaborate with AI tools throughout the creative process, while balancing this tech with a human touch and irreplicable creativity. Creative direction Without a designer as a guide, AI is operating blind. Consequently, creative direction will become even more key on AI-savvy teams. To ensure visuals are not only pleasing but align with a brand and vision, all designers will learn the ins and outs of creative direction. Quality control Remember how AI doesn’t have a designer’s eye? To avoid declines in quality, another key on creative AI teams will be the “review and refine” process. Designers with expertise will engage in quality control to ensure visuals are relevant and meet communication needs. Adaptability As the list of marketing channels and needs grow, so too will the importance of being able to adapt content with ease. Hand in hand with their AI co-pilot, designers will develop efficient systems for customizing and enhancing the versatility of visuals. Human insight No matter how sophisticated creative AI technology gets, it won’t be able to replace human insight. At the same time, it will free up more of a designer’s day to focus on nailing strategic, emotional and cultural nuances in campaigns—elevating the final product. Conclusion Overall, AI is a powerful technology that has already disrupted many industries, and its potential is only going to grow as the technology becomes closer to human intelligence. However, AI is still very much dependent on humans as it requires inputs from graphics designers to do most of the tasks. So it’s safe to say that“ AI may not replace human creativity, but designers who can leverage AI effectively will outperform those who do not.” AI empowers UX/UI designers by automating repetitive tasks, improving user research, and offering creative suggestions. It allows designers to focus on human-centered, innovative designs while AI handles data-driven tasks and optimizations. This synergy between AI and human creativity leads to more efficient design processes and enhanced user experiences. Antonio Makovac Experienced designer and technologist who loves everything from design to art. He likes UX/UI design the most, and finds his creative side in drawing illustrations, interactive animations, and spends his free time enjoying nature, drawing and painting. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 11, 2024 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 11, 2024 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # AI Project Management: Dystopian Myth or Utopian Reality? - Tech Consulting and Software Engineering URL: https://q.agency/blog/ai-project-management-dystopian-myth-or-utopian-reality/ Delve into how AI reshapes project management, turns challenges into opportunities and redefines the benchmarks of success. AI Project Management: Dystopian Myth or Utopian Reality? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > AI Project Management: Dystopian Myth or Utopian Reality? AI Project Management: Dystopian Myth or Utopian Reality? March 22, 2024 — 7 min read Unlock the potential of the future: Exploring how AI reshapes project management, turning challenges into opportunities and redefining the benchmarks of success. In a world where efficiency and innovation drive progress, AI emerges as the pivotal force in crafting solutions that transcend traditional boundaries. Imagine constructing the pyramids without a plan. It would be an absolute logistical nightmare. While the formalization of project management as a profession might seem like a recent invention, its roots stretch back centuries, guiding the construction of some of humanity’s most awe-inspiring feats. However, it wasn’t until the mid-20th century that project management bloomed, transforming from a pile of “soft skills” into a systematic discipline. Our fellow project managers and IT professionals, in this exploration, I hope to demystify the role of AI in our field , showing how it can enhance our work rather than replace it . So if you are navigating the complexities of software development or guiding multi-disciplinary projects, this blog will light the way for AI’s potential to revolutionize project management as a more efficient and innovative practice. Today, as we hurtle towards the “post-AI” era, we find ourselves at another pivotal point. Artificial intelligence is poised to revolutionize project management, particularly within the ever-evolving realm of IT. Recent research by McKinsey paints a clear picture: AI is no longer a “maybe” – it’s an essential driver for project success , shaping how we strategize and achieve outcomes. So, get ready to dive into the fascinating future of project management, where human ingenuity meets the power of artificial intelligence! From Manual to Modern: The Evolving Landscape Originally, functionally, project management was manual, driven by paperwork, physical meetings, and basic software. Proficiency demanded deep project knowledge and oversight of timelines, resources, and scope. Human judgment, leadership, and creative solutioning were front and center. Today, the profession has been completely revolutionized , with advanced digital tools, sophisticated collaborative project management software, and real-time communication. Modern project managers use data, cloud collaboration, and agile methods to optimize the speed of decision-making and change, often at the expense of intuition. The result is more data-driven, analytical, and collaborative enterprise outcomes. Gartner’s research forecasts a “significant change” by 2026, with over 80 percent of organizations taking the plunge on new data management to not just take advantage of a broad set of data sources, but process them for “actionable insights”. The company’s analysts also anticipate a corresponding explosion in AI . Generative AI used for newer processes will be used by fewer than 5 percent of enterprises now, but that should rise to more than 80 percent within the same three-year stretch (data from 2023). AI: A Powerful Present-Day Partner Imagine if you could get up to 5 extra hours of your week back — that’s the kind of time-saving magic AI tools can work for project managers. And in a recent McKinsey study, it turns out AI can automate up to 40% of the repetitive tasks project managers do every day. This allows project managers to focus on what they’re best at – getting things done. It’s like having a very competent, even brilliant, assistant. One that is analyzing vast amounts of data to understand the ins-and-outs of your project. One that can maneuver through all the complexity of modern IT (microservices, cloud, cybersecurity, etc.) and suggest what those initial strategies could be, based on this specific set of circumstances and, based on past experiences by you, with your data in your industry. So, instead of drowning in scheduling, reporting, and data-to-decisions, you can step back and have more time to think about and engage with the broader picture. But it’s not a “job-stealer” (yet) . The thing is, today’s AI is really good at automation. And that’s mostly about it. That means all those other parts of project manager wisdom: your track record on estimates, and your creative ability to spot potential snags from the vague glimmerings of uncertainty in some status report. Or that feel for how the unique intersection of your particular project, and its people, technologies, and political context – are just the stuff that machines are simply not good at (yet). But, they’re great teammates, though, and they’ll increase your productivity by carrying the workload and significantly improving decision-making accuracy. So, we don’t need to make AI an “enemy” to be afraid of, as new as this field is. We can look to our bionic project management future just like a superhero’s because the future is bright. AI’s Unforeseeable Future: Adapting to and Benefiting From Change Predicting the future of any technology, let alone one that’s as complex and mysterious as AI is fraught with challenges, but we can focus on a near-term event: the arrival of Artificial General Intelligence (AGI) . Though the arrival date remains in question, its adoption and impact will be so widespread that it will fundamentally reshape how we work, especially in IT. While that broader future looms, the impact is more clear and immediate: AI-powered tools and the capabilities they provide are significantly affecting project management and are reshaping how that role will be executed. AI’s tremendous progress is something IT project managers have always understood for their organizations. Yet in all of these tasks, a project manager is rarely the literal overseer. More often than not, they’re responsible for coordinating engineers and steering them in the right direction, implementing changes from the top. This isn’t going to work in the AI era – project management will adapt alongside the industry . It’ll shift from managing projects to leading the individual and their activities according to project strategies. It’ll become a more visible guiding hand for a workforce that’s increasingly AI-oriented . This isn’t to say that humans will disappear, but they could end up specializing in a very different set of tasks. Regardless of the tasks at hand, the difference between high performers and everyone else is clear: the former will skew heavily toward AI. It hints that project management could rely much more on AI to drive strategic initiatives and innovation. Instead, companies are likely to see a future where project management is a far more involved, far more data-driven affair . The fruits of that labor could be very promising. Integrating AI into project management should produce “unprecedented” productivity improvements and strategic insights, according to PMI and Forbes. For instance, a 2023 report by McKinsey Global Institute estimates that AI can increase global productivity by up to 1.5% annually . Additionally, a PWC report cited in Business Insider highlights studies suggesting AI can automate up to 40% of project management tasks, potentially leading to cost savings. These trends suggest that AI integration in project management holds promise for boosting efficiency and potentially reducing project costs. The bottom line? After a few years, the AI era could not only make project management more valuable, but more captivating. Unwritten Future: Project Management Beyond Limits One thing is certain; the future isn’t set. The immediate future may offer the promise of a world where AI and humans collaborate in unprecedented and unimaginable ways, but what about the long term? What happens to that human-AI relationship as we move beyond today’s AGI and toward the likes of Artificial Super Intelligence (ASI) ? At that point, the very concept of project management as we know it might be redundant. Project visualization and record keeping could be entirely the domain of AI entities so advanced that we have an entirely different landscape that no longer features humans as project managers. If and when that future emerges — and it is a distant if — it underscores how work continues to evolve and the need to continue to do the same. The power of human innovation, after all, is also what continues to carry us forward. The transformative power of AI is incredible, but it’s important that we also continue to foster those traits that still make it valuable for us to be here alongside all of AI’s capabilities and power . Marko Golec With over ten years of experience in project management and a background in software development, Marko excels at leading successful IT projects. Believing firmly in the power of teamwork beyond mere delivery metrics, his expertise extends into exploring technological frontiers, particularly in Smart Home solutions and AI innovations. Passionate about anticipating future tech trends, Marko also tends to contribute to open-source projects in his spare time. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 22, 2024 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 22, 2024 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Introducing Q to Algebra students - Tech Consulting and Software Engineering URL: https://q.agency/blog/algebra-virtual-visit/ Algebra students joined a virtual Q visit to explore our company, workplace culture, digital marketing, and career opportunities in tech. Introducing Q to Algebra students | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Introducing Q to Algebra students Introducing Q to Algebra students March 31, 2021 — 4 min read The Department of Algebra’s International Cooperation of the University has been organizing the International Winter School for students from all over the world for the fifth year in a row. In January 2021, the program was online due to Covid-19 circumstances. To complement the academic knowledge from the lectures, Algebra College takes students on visits to companies that can show firsthand what their future professions look like in a real business environment. An online visit to the Q agency was organized as part of the Digital Marketing course and drawn up to the following agenda: a virtual walk accompanied by the Oice Manager, a presentation of the Q company profile by the Head of Business Development, and a demonstration of the use of technologies related to digital marketing led by the Head of Communications. Virtual tour de oice Due to the Covid-19 crisis and the simultaneous need to hire new professionals, Q decided to make a virtual tour of the HQ oice so all new Qumans would not be left completely deprived of this experience. HQ oice is the company’s pride, and therefore the client’s most common comments are that they cannot believe that they are in Zagreb. For them, this building belongs to London or New York. Q’s Oice Manager, Maja, showed all the areas where Qumans work, where they have skype calls with clients, where meetings are held, and where Qumans rest, have after-work socializing and spontaneous team building. In this way, all participants in this lecture are allowed to see what it is like to be a part of the Q work environment and atmosphere. Q Company profile Head of Business Development, Adrian, led the Q company profile presentation. The topics covered started from what actually represents our slogan “Whatever the Q, we got an A.” The second topic was how much do various awards mean in the business world, such as the Deloitte Award for the fastest growing agency, the Clutch Awards, the European Business Awards, and others contributing to our products’ relevance. Indicators that provide information on how fast Q is growing, its engagement, in which markets Q operates, and who are our biggest clients is a quality insight into the company’s business and the broader picture that Q oers as an employer to all young professionals. The participants’ feedback was very positive, and the number of questions Adrian was asked tells us all about it. Head of Communications, Ana, has been the mainstay of this lecture since the virtual visit was organized by the Digital Marketing course at Algebra College. Ana introduced her team, the Communications team’s scope, and why this department is called Communications and not Marketing as it is in most other companies. The dierence between other Marketing departments and Q’s is that our Communications team conducts internal and external communication. Internal communication arose from the company’s needs since employee engagement and satisfaction are among its main missions. Ana explained and approached the participants in an exciting way and in what form and through which communication is carried out. The emphasis is on all activities such as internal workshops, Q’s first standalone product- Jenz app, Management videos, and others. In addition to quality engagement and a high employee satisfaction level, external communication is crucial and not just for promotion. Ana explained the channels, ways of communication, and the tools used to facilitate these processes through examples and situations in the last year since the establishment Communications department in Q. As Head of such a department, Ana spoke about all the obstacles faced, what it is like to be the head of a blooming department with young, ambitious women like herself and how teams can monitor their activities and projects. Attendees were delighted with the insight into the Communications department business, Ana’s life story, whereas a young doctor reached the Head position of a software agency and the dynamics of trends and growth of the company that the department must follow. There were a handful of questions, and in fact, a large part of the time was set aside for the participants’ questions, which was the most beautiful surprise. Q has always been generous in sharing the way we do business and bringing Q culture closer to others that we work hard on every day, and it actually sets us apart from all other companies. That is why it is a great honor to be synonymous with good business in the IT industry. We are happy to respond to all similar projects and hope that there will be even more in the future! Maja Tolic Maja is an Office Manager at Q agency. She is the one who ensures the whole office runs smoothly. Organizing meetings, managing databases, and transporting bookings are what her day is made of. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 31, 2021 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 31, 2021 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Algebra Visit - Tech Consulting and Software Engineering URL: https://q.agency/blog/algebra-visit/ Q hosted international students from Algebra’s Winter School, giving them firsthand insight into the tech industry and future careers in a real business environment. Algebra Visit | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Algebra Visit Algebra Visit February 7, 2020 — 1 min read Every year Algebra university college organizes the International Winter School, which is attended by students from renowned universities from around the world. Fifty of them came to Zagreb this January. The courses that students listen to are Artificial Intelligence, Digital Marketing, and the Internet of Things. In order to supplement the theoretical knowledge of the lectures, Algebra expressed the desire and asked us to host students and to show firsthand what their future careers would look like in a real business environment. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 7, 2020 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 7, 2020 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # All About Strategic Workshops: Our Most Popular Service This Year - Tech Consulting and Software Engineering URL: https://q.agency/blog/all-about-strategic-workshops-and-how-it-became-our-most-popular-service-this-year/ Learn how Q’s strategic workshops help businesses shape digital product strategies through user research, brainstorming, industry insights, and actionable roadmaps. All About Strategic Workshops: Our Most Popular Service This Year | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > All About Strategic Workshops: Our Most Popular Service This Year All About Strategic Workshops: Our Most Popular Service This Year December 15, 2020 — 5 min read Working in a digital agency is usually associated with projects in the realm of a website or mobile application development. But what is usually overseen is that in order to design and build a successful digital product – you first need to understand your Client’s business- their growth strategy, business model, and customers. Because a digital product – whether it is a website or business process digitization behind – has to contribute to a business measure of success: customer experience improvement, growing revenue, or increased eiciency. Having worked with global Clients on various digitization projects over the years, Q agency has gathered extensive knowledge and best practices from dierent industries and markets. In a way, working in a digital agency is similar to being a consultant on digitization topics. With the idea of sharing knowledge with our Clients, 2 months ago we started a new initiative – S trategic Workshops. Platform for a structured brainstorming The goal of the workshop is to provide relevant insights and our ideas on digitization topics of importance to our Clients. Every workshop is tailor-made and focused on topics previously agreed with a Client during the preparation phase. This phase includes a Client Interview where we get a better understanding of the Client’s business goals (short and long term) and set a workshop focus. For some, the focus was on growing their business through increasing digital presence, and for others, it was about digitization eorts around their B2B business model. After a Client interview, our Product Strategy team prepares a workshop structure that includes various framework methods. Those methods help our Product Strategy team running the workshop and key business stakeholders from the Client-side participating in the workshop – CEO, Heads of Digitization, Marketing, and Sales – to brainstorming together. Due to the current situation, all workshops are held online but that does not make it any less eicient than the real one. It’s all about the user Every workshop starts with 2 essential topics: Target customer base , where we focus on understanding the experience and needs behind specific user persona, and Brand wheel, where we engage in interactive discussions on how the brand is represented. The latter is especially useful as it reveals a gap between where the Brand is and where it wants to be, having in mind clients’ digital presentation and communication to their target base. Where possible, we also conduct user research to better understand the target customer base. For example, during one workshop, we recommended ideas around targeting early adopters: how to communicate to them through the digital touchpoints and build a value proposition based on the user research insights. This part of the workshop is highly important as it is about re-thinking value proposition and go-to-market strategy. We really need to think about the users and value we are bringing to the market first, and then how to translate these ideas into digital. Thinking about a digital product, but through diverse industries When thinking about a digital product (for example a website), the first instinct is to compare yourself with your competitors. However, looking beyond your industry can open doors to new ideas (design or content-wise) that can really set you apart from your competitors. One of our client CEOs said: “I never thought about approaching it from this angle.” Because Q has worked on a diverse range of projects, we can bring the know-how and “think outside the box” to propose innovative ideas. Also, our digital knowledge gives us credibility for the immediate creation of a digital product strategy and roadmap. Mapping ideas to digital product Finally, we move to ideating digital product(s). By this point, we have talked about the business model, competitive landscape, and the target customer base – user personas, their experience pillars, and the value which the Client’s product is bringing to the market. Based on the key takeaways from these topics, and combined with our prepared list of ideas and insights, we go into the final workshop phase – mapping a roadmap and key elements of the go-to-market strategy together. Setup was perfect. I had the feeling everybody attending was an expert in their fields so all input was valuable and we covered a lot of dierent aspects and spots someone else might have overseen. I liked the proactive thinking and idea introduction as we saw a dierent kind of approach towards a challenging task of itself “how could a consumer think, what might they like right away and why would they be using it. We have received a lot of positive feedback from our Clients following the Strategic Workshops. Clients found our extensive approach, thinking, and workshop results deeply valuable for their business. For us, this approach underlines the importance of building partnerships with our Clients by creating a platform not only for sharing our knowledge from dierent markets, industries, and digitization projects but also our passion for what we do. Rebeka Belavic Rebeka is Head of Product Strategy at Q agency. combines her technological superpowers with business experience to develop digital products and services. Besides holding a Masters in Engineering and MBA, she is also a passionate writer and a painter. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 15, 2020 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 15, 2020 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # All You Need to Know About Design Handoff and More - Tech Consulting and Software Engineering URL: https://q.agency/blog/all-you-need-to-know-about-design-handoff-and-more/ Discover essential tips, tricks, and guidelines for a seamless design handoff, and navigate common challenges with expert advice. All You Need to Know About Design Handoff and More | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > All You Need to Know About Design Handoff and More All You Need to Know About Design Handoff and More July 7, 2023 — 12 min read Have you ever entered someone’s Figma file and spent hours and hours figuring out what’s what? Is design handoff a grueling and time-consuming task for you as a designer? In this post, you’ll find tips, tricks, guidelines, and useful links to help you navigate these and many other problems designers and developers face during the design handoff . This guide is rather comprehensive, so feel free to skip to the chapters that interest you most. What is a design handoff? Why do we design handoffs? Why do designers commonly ignore handoffs? How to do a proper design handoff? Follow our design process Pro tips for clean design files and assets Use atomic, modular design Always use auto-layout Using spacers Proper organization of your Figma file — with examples Design handoff in an Agile environment Tips to improve your communication with the developers Is Agile better? Summary What is a design handoff? First things first. Defining the issue. Design handoff is the process of transferring the final design from the design team to the development team . This typically involves providing the development team with all of the necessary design assets, such as wireframes, mockups, style guides, and any other relevant documentation. The design handoff process is an important part of the design process, as it ensures that the design is properly understood and implemented by the development team . Why do we design handoffs? To make it easy for developers to develop the product accurately, as designers intended To make sure our design is consistent. To make it easy for developers to estimate their project To make sure the developed product is consistent with our design Why do designers commonly ignore handoffs? The most common mistake designers make during the handoff is that we don’t provide enough context and documentation . It’s an easy mistake to make if you’re focused only on your design and an even easier mistake to make if you’re in a time pickle. So what designers usually do is, they just hand off the completed screens in their Figma file and that’s it. I’m here to remind you the screens are not enough. Imagine you are building a house and the only reference you are giving the builders of your house is a visualization of the interior design. No floor plans, no installation plans, just a beautiful picture. The builders would have a million questions: where is the floorplan, what are the dimensions, what to do with the pipes, where to install electric cables,… (although let’s face it, most of them will just think you’re just completely crazy or that you’re fooling around. Some of them might even be impolite to you!). The same thing happens if you just give over your finished design screens to developers. Without proper documentation, they can’t build the product you designed. Therefore it’s important to organize your file in a systematic way, add notes with descriptions and arrows explaining the connection between the screens, prototypes, and so on . How to do this properly? Well, just read on. How to do a proper design handoff? Follow our design process We have a carefully planned and systematic approach to design which is explained in our Confluence (note: only visible to Qumans). Following these guidelines will make it easier for you to hand off your designs because you will have all the deliverables and pre-requirements ready to go once you finish designing. Pre-requirements for design handoff: Finished and approved UI All assets (copy, images, icons, typefaces, etc.) Deliverables for design handoff: Information architecture User flow diagram Mockup Prototype Styleguide Typography scales Prepared and cleaned assets (copy, images, icons, typefaces, etc.) Breakpoints Transitions and (micro)animations definitions The devil is in the details — pro tips for having clean design files and assets Fixed width elements — When elements have a fixed width that should be indicated to developers (add a description for a module). A perfect example of such an element would be a pop-up module. About page in Figma — It’s good practice to create a separate Figma page with links to project documentation and the responsible person’s contact info. Here is an example of a template we use. Changelog — when working on larger projects, or on projects with many iterations, it’s a good idea to create a changelog and update it regularly. Max characters — when the space is limited, we should document how many characters is the maximum. If you know that paragraphs would have a maximum number of characters or lines of text on different breakpoints, please put that information into the design. A perfect example would be blog article cards. If you want to have a maximum of two lines of text on the article card on a desktop, and three lines of text on mobile screens, please write that down for developers. In this case, this information can be put as a placeholder, instead, or in addition to lorem ipsum text. Designer’s notes — to make your screen clear to read for developers, add a note next to it. Be concise and informative. Try to think from the perspective of a person who is seeing your screen for the first time and write additional info you think might benefit them. Some good examples are prerequisites, micro-animation notes, element fixed width… Write down anything that is not clear or visible on the screen at a first glance Screen headers — for additional clarity, we add screen headers above the designed screens, with a short description of the user flow these screens depict. It is also useful to provide links to any additional resources or even Jira tickets here. Linking screens with arrows to show the user flow — this way its easy to see how the screens are connected to each other, which brings clarity to developers and really helps when onboarding new designers on the project. For Quman designers who want to “do more”, here is a link to our Figma file which explains the musts, the should haves, and the nice to haves of every design project. Use atomic, modular design A modular design is an approach to product designing which we use to produce a complete product by integrating or combining smaller parts that are independent of each other . With the modular design approach, a complex product (for example, a car) can be broken down or divided into smaller and simpler components that are independently designed and manufactured. Each of these components is then integrated (or assembled) to form the final product. The same logic is applied to software engineering and design. Per the basic definition, modular design allows one to customize, reuse, upgrade, or maintain product designs . Additionally, the modular product’s independent parts follow a standard interface to fit into each other as the finished product easily. Atomic design is a design principle that divides the design into small parts called modules . Atoms, molecules, organisms. Learn more about atomic design here. Use our library of reusable components to speed up your work and make it more consistent. Showcase your components on a separate page so the developers have an easy overview of the modules they need to build. Always use auto-layout I cannot stress how important this is, yet not every designer is comfortable with it. The reason behind is that auto-layout (if properly used) mimics the way the frontend elements behave in CSS flex, which is the industry standard for creating front-end layouts. No elements should be left “hanging in the air” because it’s not the way these elements behave once developed (they would have been positioned absolutely which is an uncommon practice). Designing in auto-layout means thinking like a developer during design, and that’s challenging for designers who are unsure how front-end code works . However, if you want to step up your game as a designer, designing with auto-layout should become second nature to you. Learning how layouts work in CSS (flex, grid, positioning, etc) will help you a lot in developing the ability to think like a developer, and become a better UX/UI designer. Here are links to some resources I found helpful: Auto layout in Figma CSS Flex Using spacers Spacers are basic components that contain empty space. There are two reasons why I use spacers. Firstly, instead of manually adjusting paddings for each layer and each container in the auto-layout, you can just leave it at 0 (zero) and use spacers instead . Secondly, developers usually don’t have edit rights for our Figma file, so it’s harder for them to see the paddings of each layer and component, whereas with the spacers they don’t have to click and inspect every layer. Make the job easier for your developers, they’ll love you for it. Proper organization of your Figma file — with examples Let’s have a sneak peek into a Q internal project Figma file organization. Note this is not the only way to structure your Figma file, but the logic behind it should be very instructional, especially to designers who haven’t worked in an agency environment before. Before any design even happens, designers are provided with documentation (usually by the BA team) that includes app features divided into epics and user stories as well as sets of rules and prerequisites for each feature. This is a nice example of such a sheet: What we’re doing in Figma is actually visually representing this spreadsheet so it makes sense to follow the existing documentation format in our Figma file as well. This will bring clarity to everyone involved in the project. Here’s a guiding principle on how to organize your Figma file to mimic the given documentation: For each epic, create a separate Figma page . Name it same way as the epic in the docs. For me, this would be E01 – Account administration Group all screens for each user story into a separate section. This is a relatively new feature, and a neat way to keep your frames organized. (keyboard shortcut is: Shift+C) I named my first section 01-Profile page layout Organize and name the screens in each section properly , i.e. 1920 – 01 – 1 Page Layout 1920 stands for dimensions (desktop), 01 is the number of the user story in this epic, and additional numbers are steps in the flow. Screens next to each other show the same view, but on different viewports/breakpoints (desktop, tablet, mobile) The screens below follow a logical user flow (in which preconditions for the next screens are clearly visually represented) or show edge cases that need further explanation. Don’t forget to add notes for descriptions and additional explanations Design handoff in an Agile environment It’s worth noticing that design handoff, as a single, final phase of the design process is a part of a waterfall methodology which is somewhat outdated in favor of A gile methodology . In an Agile environment, it’s even more important to continuously follow the design process because the handoff happens literally every day, only in smaller chunks. You will be a part of daily scrum ceremonies and you will need to collaborate closely with developers and business analysts to deliver every sprint. Tips to improve your communication with the developers Ask constructive questions frequently What library will you be using? Is this screen clear to you? Do you have any questions or suggestions? These are examples of such constructive questions. For instance, if you know the developer will be using the Bootstrap library it would make sense to design your screens to match Bootstrap layouts and breakpoints.What you shouldn’t do is let developers dictate your designs. If you designed a certain feature in a way you think it’s best for the users, don’t let the developers persuade you otherwise just because it requires some extra effort on their part. So, ask them questions, value their opinion, but push your solutions when necessary. Be clear and concise in explaining your ideas. Avoid technical jargon and ambiguous abbreviations Never assume the developers will understand your technical terms, such as kerning, bleed, above-the-fold, etc. Most of them will understand you, and that’s great, but it’s not in their job description to do so. The same goes both ways. Developers, please, we’re already struggling even without trying to decipher what MR, PR, MVP, DB, UAT, or API mean… 🙂 Be flexible and adjust to your project and your team’s workflow In Agile, you need to be flexible because you’re constantly working closely with your team. What I like to do when I start working on a project is schedule a meeting with my project team members (usually it’s a BA and front-end devs). Together, we go through the broad business requirements, and then we organize our Figma file in a way that best suits our workflow. For example, on one of my recent projects, the product owner would often open new Jira tickets in which he would ask for various proposals, even after the a certain idea got its approval. Therefore, it made sense to create a Figma page just for Proposals that needed to be approved. That page had sections with links leading to specific Jira tickets. It’s not our standard practice, but it worked best for us in this particular case. This kind of flexibility is typical for an Agile environment. It’s expected of us to adjust and adapt. Live Q feedback culture You shouldn’t be afraid of giving and receiving feedback, provided it’s constructive. We all make mistakes, but we also learn from them. If we’re not aware of our mistakes we can’t learn, it’s as simple as that. So pointing out mistakes and accepting our mistakes leads to the team’s growth. But remember our values, be kind. Is Agile better? Overall, design handoff in Agile is much easier , because the communication between the designers and developers is much more frequent, and the amount of documentation designers need to prepare is considerably less. However, in Agile it’s even more critical to set up your file properly from the start and to update it regularly. Summary Design handoff should not be a source of stress for you if you think about development from the beginning. Structure the file neatly, according to our guidelines. Let your design match the development process as much as possible by using atomic design, grids, spacers, and auto-layout . Be consistent with naming conventions. Document and label everything, and don’t forget to communicate as much as possible with your developers. Hrvoje Miloloza Hrvoje is a skilled designer who likes philosophical discussions, board games, pub quizzes, good SF, and most sports. He will absolutely never refuse a game of chess or table tennis. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 7, 2023 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 7, 2023 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # An eggsquisite breakfast for everyone - Tech Consulting and Software Engineering URL: https://q.agency/blog/an-eggsquisite-breakfast-for-everyone/ Q agency started the week with a delicious breakfast, offering employees a variety of sweet and healthy options to enjoy together. An eggsquisite breakfast for everyone | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > An eggsquisite breakfast for everyone An eggsquisite breakfast for everyone November 30, 2018 — 1 min read How to make sure everyone kicks o their week happy? Organize a breakfast for everyone. That’s exactly what Sara, our People Experience Manager, did. From oatmeal and fresh fruit and beloved Nesquik and Nutella, everyone had their breakfast of perfect choice. “Sara, why so serious?” It’s morning, she said. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 30, 2018 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 30, 2018 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Analytics Maturity Model - Helping Drive Insights That Matter - Tech Consulting and Software Engineering URL: https://q.agency/blog/analytics-maturity-model-helping-drive-insights-that-matter/ Explore Q’s Analytics Maturity Model and learn how data strategy, analytics, and AI can drive better decisions and business results. Analytics Maturity Model - Helping Drive Insights That Matter | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Analytics Maturity Model – Helping Drive Insights That Matter Analytics Maturity Model – Helping Drive Insights That Matter March 29, 2022 — 3 min read Extensive advancements in analytics have made companies struggle with data innovation . The most prominent market leaders in advanced analytics are still leaving value on the table. Ample research in operationalizing Artificial Intelligence complemented with the explosion of data is capable of revolutionizing business processes. These data-driven competencies will underpin increased productivity and process optimization and improve overall business results with better decision-making, risk management, and critical competitive advantage. We found that the missing link in numerous AI transformations is a well-planned Data Strategy . So, I have designed an analytics maturity model to aid and guide our clients in achieving their analytics ambitions. Analytics Maturity Model—A look inward for a leap forward Before companies can drive data eorts to value, they need to take a step back and focus on gaining a deeper understanding and baselining their present capabilities. The focus can then shift towards discovering the “art of the possible” and designing an analytics vision tailored and aligned with broader business strategy and goals . I can break down analytic competencies into five maturity stages: descriptive analytics diagnostic analytics predictive analytics prescriptive analytics cognitive analytics . Five simplified analytic maturities Descriptive analytics implies having the ability to visualize data tailored to the viewer’s needs. An emphasis is put on the customer-centric experience because it goes a long way in aiding the stakeholder’s decision-making process. It is principal to highlight important KPIs and not distract one’s attention with irrelevant numbers. The most distinguished data visualization tool is Tableau , with PowerBI being preferred by many. Diagnostic analytics goes a step further. Beyond conveying historical data through various dashboards, organizations have far-reaching data-first interpretations of pivotal business events and metrics. Seeking to provide these insights, data analysts turn to the analytic capabilities of the tools mentioned above. With everyone striving for state-of-the-art solutions, it is possible to forget about the value diagnostic insights provide to the business. Data-driven decision making process Shifting from diagnostic to predictive analytics is where many organizations become liable to dawdling. This endeavor is a significant step and requires considerable commitment to be done properly. Predictive analytics eliminates a big blind spot in data-driven decision-making by allowing managers to anticipate future trends besides having the usual diagnostic, retrospective look at operations. Prescriptive analytics is a natural improvement upon predictive. Rather than solely predicting metrics , these systems act as associates in the decision-making process by giving data-supported decision guidance. However, low adoption can be attributed to the inability to use dashboarding tools and the requirement of significant upfront investments. As a result, stakeholders have often led away from developing these systems, not seeing the long-term value . Cognitive analytics encompasses state-of-the-art solutions developed and used by primarily Fortune-500 technology leaders . Unfortunately, only a select few have been able to capture real ROI from these products. Regardless, learning about cognitive advancements helps managers envision what the future holds—having accurate vision aids in developing an appropriate data strategy to reap the benefits in the long term. Guiding analytics eorts to value Developing a data strategy is a crucial step toward becoming a data-driven organization. When done right, 80% say it was worth every penny. Helping you break down the complexity, the analytics maturity model will guide you in the process. Feel free to reach out at hello@q.agency if you are excited to start your data journey with us. Patrik Durdevic Patrik is a Data & Analytics Consulting Intern with extensive experience attending numerous national and international competitions. Having joined Q, Patrik is leveraging his expertise and affinity for strategy development to advance business analytics and machine learning applications while designing state-of-the-art services. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 29, 2022 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 29, 2022 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # ASP.NET MVC 5 Multi-Level Convention-Based Routing - Tech Consulting and Software Engineering URL: https://q.agency/blog/asp-net-mvc-5-multi-level-convention-based-routing/ Find out how to customize ASP.NET routes effortlessly by tailoring conventions to match your unique project requirements. ASP.NET MVC 5 Multi-Level Convention-Based Routing | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > ASP.NET MVC 5 Multi-Level Convention-Based Routing ASP.NET MVC 5 Multi-Level Convention-Based Routing August 3, 2023 — 8 min read ASP.NET has convention-based routing that provides a simple and intuitive way of structuring routes in a website. But what if you want to break from that convention? How do you change the convention used by the system to organize routes to better suit your project’s needs, without the need to manually set up each route individually? Note: this blog post concerns the .NET Framework version of ASP.NET MVC specifically. By convention, ASP.NET has a fixed 2-level folder structure that the code expects, so that, when returning View() in controller actions, it can find the corresponding template file automatically. └───Controllers └───Controller.cs └───Views └─── └─── The Problem But what if you had multiple logical sections of your application? Say you had a web application with a menu structure like this: Home Dashboards └───Client Feedback └───Last Feedback └───Feedback Trends └───Vehicles └───Work Progress Reports └───Client Feedback └───By Client └───By Project └───Vehicle Maintenance └───Work Summary Admin └───Clients └───Projects └───Vehicles The problem such a structure has is that, since it all has to be a flat file structure due to ASP.NET’s conventions, there will be name conflicts between pages. For instance, pages under both Dashboards > Client Feedback and Reports > Client Feedback would presumably have templates in /Views/ClientFeedback/​.cshtml and would both be controlled by the same ClientFeedbackController.cs Ideally, we’d have a file structure like: └───Controllers └─── └───Controller.cs └───Views └─── └─── └─── Additionally, all the routes would be squashed into the same “section”, so /VehicleMaintenance would be a report, and /WorkProgress would be a dashboard, with no way to tell them apart via the link alone. The Simple and the Jank There are several ways of getting around this. ASP.NET Areas The most obvious solution would be Microsoft’s solution specifically addressing this: areas . The problem with this approach is that it’s made for cases where the separate sections of your application are significantly logically distinct so as to be considered entirely separate applications. For example, a CMS’s client end, and its administration panel backend. Or a bank’s website and the bank’s web banking client. As such, the folder structure it requires is: └───Areas └─── └───Controllers └───Controller.cs └───Views └─── └─── So it necessitates having several View and Controller folders, one per area, which is an overkill when just trying to structure pages within a single application. Prefixing the Controller Names You could, of course, just prefix the section name to all controller names. So, the Dashboards > Client Feedback > Feedback Trends menu item would go to /DashboardsClientFeedback/​FeedbackTrends , and would find the template under /Views/DashboardsClientFeedback/​FeedbackTrends.cshtml. This, in itself, is not bad. But, as more pages are added, the Views folder will just keep bloating up with no way to group items. That, and the /DashboardsClientFeedback/​FeedbackTrends link isn’t the best one possible, when /Dashboards/ClientFeedback/​FeedbackTrends would make much more sense. ASP.NET Attribute Routing with Explicit View You could also structure your views however you want, use Attribute Routing to structure your controller and view routes, and point them to the appropriate view by calling the View(String) overload, passing in the full path to the view manually. This is a workable solution that would work well on smaller projects and websites, but isn’t very scalable, since it adds a lot of overhead when adding or changing controllers (e.g. remembering to change the route and path when renaming actions), and adds clutter to the code itself. The Scalable Solution Routes The first thing we need to do is add a new parameter to our route table entry. Let’s call this new parameter section: routes.MapRoute( name: "Default", url: "{section}/{controller}/{action}/{id}", defaults: new { section = "Home", controller = "Index", action = "Index", id = UrlParameter.Optional } ); The defaults are up to you, but make sure to be consistent. The above setup means that our homepage controller will be under ~/Controllers/Home/IndexController.cs and the view will be under ~/Views/Home/Index/Index.cshtml . This should replace the old default route, not be added alongside it! View Selection Next, we need to tell MVC how to find the appropriate views in the correct subfolder. ASP.NET uses an object implementing the IViewEngine interface to actually search for and grab Views when rendering a page. Razor specifically uses RazorViewEngine to render views of type .cshtml and .vbhtml. Its source code is available on this address . As RazorViewEngine is not a sealed class, we can override it with our own custom version: public class CustomViewEngine : RazorViewEngine { } In its constructor, we have to define our custom route formats. This is done via six string arrays: AreaViewLocationFormats AreaMasterLocationFormats AreaPartialViewLocationFormats ViewLocationFormats MasterLocationFormatS PartialViewLocationFormats For our purposes, we only need the non-area ones: public CustomViewEngine() : base() { ViewLocationFormats = new string[] { "~/Views/%1/{1}/{0}.cshtml", "~/Views/%1/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml", }; MasterLocationFormats = new string[] { "~/Views/%1/{1}/{0}.cshtml", "~/Views/%1/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml", }; PartialViewLocationFormats = new string[] { "~/Views/%1/{1}/{0}.cshtml", "~/Views/%1/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml", }; } The format tokens {0} and {1} are necessary and later used by the ViewEngine to insert the action ( {0} ) and controller ( {1} ) into the path. For that reason, we’re using a custom token %1 to mark the section fragment of the path. In that same class, we now need to override three functions: CreatePartialView() , CreateView() and FileExists() , in which we’ll replace our custom token with the section route parameter. protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath) { var section = controllerContext.RouteData.Values["section"]?.ToString() ?? string.Empty; return base.CreatePartialView(controllerContext, partialPath.Replace("%1", section)); } protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath) { var section = controllerContext.RouteData.Values["section"]?.ToString() ?? string.Empty; return base.CreateView(controllerContext, viewPath.Replace("%1", section), masterPath.Replace("%1", section)); } protected override bool FileExists(ControllerContext controllerContext, string virtualPath) { var section = controllerContext.RouteData.Values["section"]?.ToString() ?? string.Empty; return base.FileExists(controllerContext, virtualPath.Replace("%1", section)); } Next, in Global.asax.cs , in the Application_Start() function, we need to register this new ViewEngine by adding these lines to the function: ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(new CustomViewEngine()); This will allow the MVC engine to correctly find the appropriate view when using return View(); Controller Selection The above solution will work on its own – for some cases. Unfortunately, in our example, we will still encounter an ambiguous controller exception on some routes. For example, when we try to access /Dashboards/Vehicles , the controller that route will look for is VehiclesController . The problem is, we should have two of those, one under Dashboards , and one under Admin , each under its own section namespace. The Quick and Dirty Solution We could get around this by defining multiple routes and scoping each one to a single namespace: routes.MapRoute( name: "Home", url: "", defaults: new { section = "Home", controller = "Index", action = "Index", id = UrlParameter.Optional }, namespaces: new string[] { "MVC.Controllers.Home" } ); routes.MapRoute( name: "Admin", url: "Admin/{controller}/{action}/{id}", defaults: new { section = "Admin", controller = "Index", action = "Index", id = UrlParameter.Optional }, namespaces: new string[] { "MVC.Controllers.Admin" } ); routes.MapRoute( name: "Dashboards", url: "Dashboards/{controller}/{action}/{id}", defaults: new { section = "Dashboards", controller = "Index", action = "Index", id = UrlParameter.Optional }, namespaces: new string[] { "MVC.Controllers.Dashboards" } ); routes.MapRoute( name: "Reports", url: "Reports/{controller}/{action}/{id}", defaults: new { section = "Reports", controller = "Index", action = "Index", id = UrlParameter.Optional }, namespaces: new string[] { "MVC.Controllers.Reports" } ); This works fine, and it is perfectly serviceable for smaller projects. But it isn’t scalable, it introduces overhead when refactoring or adding routes, and has some issues when attempting to map 1- and 2-level routes (e.g. /Login ). Altering the Way Controllers Are Grabbed in the First Place If we want to keep our single simple default route, and instead change the way ASP.NET finds controllers directly, we need to provide a new IControllerFactory . We do this by extending DefaultControllerFactory . Its source code is available on this address : public class CustomControllerFactory : DefaultControllerFactory { } In it, we need to override the GetControllerType(RequestContext requestContext, string controllerName) function. We also need to extract some functions from the ASP.NET source code and place it here, since they’re defined as internal. You may be tempted to just inject the namespace into the route data, then call base.GetControllerType(requestContext, controllerName). However, by default, if no matching controller is found in the provided namespace, ASP.NET will fall back to looking inside the entire default assembly, then all assemblies. This means that something like /Test/WorkProgress will still successfully navigate to the WorkProgressController inside the Dashboards folder, even if it’s not the correct route. This means we need to write the logic ourselves. The class should look something like this , when all is said and done. After adding it, we need to register it in Global.asax.cs , in the Application_Start() function: ControllerBuilder.Current.SetControllerFactory(typeof(CustomControllerFactory)); After registering both the ViewEngine and the ControllerFactory , and rearranging the controllers and views, it should all work as expected. Conclusion While this example is specific to using multi-level routes, a similar approach can be used to make any alterations to ASP.NET’s convention-based routing your project may need. Once you’re providing your own ViewEngine and ControllerFactory, the doors are open to any adjustment you see fit. Use some restraint, though, document and comment your code well, since breaking from any convention carries inherent overhead when onboarding new .NET developers to the project and takes adjustment time to get used to. The demo of this solution can be found on this link . Mario Sparica Mario is a .NET developer at Q agency. He has extensive experience working with enterprise applications targeting .Net Framework and .Net Core, both on desktop platforms and the cloud. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 3, 2023 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 3, 2023 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # B2Run Zagreb - Tech Consulting and Software Engineering URL: https://q.agency/blog/b2run-zagreb/ Q employees joined B2Run Zagreb for a 5km race around Jarun Lake, combining teamwork, healthy living, networking, and fun. B2Run Zagreb | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > B2Run Zagreb B2Run Zagreb October 4, 2019 — 1 min read B2Run, the most significant gathering of employees from Croatian companies, both in the private and public sectors, was held for its fourth edition in the four largest Croatian cities. We had a chance to take on a 5km long track around the Jarun lake in Zagreb. It provides a unique opportunity for socializing, healthy lifestyles, networking, and business promotion. B2Run has grown to be the most important business event in Croatia for the past three years and we are glad to witness there are more and more Q employees participating every year. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 4, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 4, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Beyond requirements: How a BA Mindset Transformed a Healthcare Project - Tech Consulting and Software Engineering URL: https://q.agency/blog/ba-mindset-healthcare-project-transformation/ Through real challenges and lessons learned, in this article we share how a BA mindset can shape project's success. Beyond requirements: How a BA Mindset Transformed a Healthcare Project | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Beyond requirements: How a BA Mindset Transformed a Healthcare Project Beyond requirements: How a BA Mindset Transformed a Healthcare Project May 19, 2025 — 8 min read Reflecting on one of the most complex projects of my career, this blog explores how I navigated stakeholder conflicts and overcame uncertainty to deliver a solution that truly made a difference in the healthcare industry. Through real challenges and lessons learned, I share how a business analyst’s mindset can shape project success. What do you do when you’re the business analyst on an Agile healthcare project and nothing aligns: not the stakeholders, not the integrations, not the expectations? When requirements keep changing and you start questioning whether you’re doing your job well enough? How it all began A few years ago, I found myself in exactly this situation. A client hired us to rebuild their digital healthcare application where registered patients could fill out medical information, schedule doctor appointments and hold therapy sessions. On the surface, it sounded like a straightforward rewrite. But from the start, I sensed this project would be anything but simple. The app had a poor user experience, needed to integrate with multiple systems and suffered from misalignment among stakeholders. Every department had a different vision. Frustrated patients dropped off before completing onboarding, and doctors struggled with incomplete data. All of this led to business losses for the client. It felt like a lot to untangle — and in many ways, it was. But step by step, I found my way forward. The success didn’t depend only on applying standard BA techniques , but also on embracing the right BA mindset – one that balances structure with adaptability, analysis with intuition, and technical knowledge with problem-solving. In the next sections, I’ll walk you through how I helped align stakeholders, redesign the patient experience and ensure our solution worked for all users. More importantly, I’ll share the lessons I learned not just as a BA but as someone who had to push through self-doubt to make an impact. Step 1: Identifying pain points and aligning stakeholders After defining the high-level project scope, we took a closer look at key issues with the client’s existing application. It quickly became clear that the onboarding questionnaire was the biggest pain point . It was supposed to guide new patients through an initial assessment and help them move forward in getting the right therapy. Instead, most users dropped off before completing it. Because this had a direct impact on the client’s ROI, stakeholders had conflicting opinions on how it should work. Requirements kept changing. The tension grew with each meeting, and I started questioning whether I was handling the process correctly. At this point, I knew I had to take a step back and apply a structured approach to bring clarity to discussions. Here’s how I tackled it: Document analysis – Reviewed past versions of the questionnaire to familiarise myself with the functionality and define inconsistencies and redundant questions. Workshops and interviews – Held frequent discussions with key stakeholders to identify pain points and ensure each perspective was addressed. Process modelling – Designed high-level process flows to consolidate different perspectives into a single, streamlined workflow. The image below illustrates one of these process flows, showing where the questionnaire fits into the user journey. This diagram helped stakeholders see the bigger picture and align on a shared understanding of the process. This diagram is illustrative and doesn’t contain actual project data to maintain confidentiality. Step 2: Designing a smoother user experience Once we got all stakeholders on the same page, the next step was to redesign the questionnaire. Our goal was to make it clear, easy to follow and more efficient by automating the process for determining whether patients could receive therapy. However, there were other users included in the process: doctors needed access to responses in their system, and administrative staff needed data to complete onboarding. Here, collaboration skills and empathy played a key role. Patients, doctors, administrators and third-party development teams all had different expectations for the experience. With so many user groups involved and multiple systems to integrate, it was easy to get caught up in over-engineering. I focused on bridging these gaps, making sure the system met everyone’s needs without adding unnecessary complexity. This required actively listening, facilitating discussions and turning insights into a solution that worked for all user roles. I tackled it using the following techniques: Decision modelling – Created a questionnaire sheet with a complete list of questions, subquestions, answer logic and business rules for determining therapy eligibility. Process modelling – Designed detailed flowcharts and activity diagrams showing how patients progressed through the questionnaire. Workshops – Collaborated with technical teams and key stakeholders to define how patient data would flow between systems. Step 3: Building real user scenarios Although we managed to define all details regarding the questionnaire, one thing still bugged me: would it work for all types of patients? There’s a Croatian saying “Sto ljudi, sto ćudi” (meaning “A hundred people, a hundred opinions”). And it couldn’t have been more true in this context. The client’s patients belonged to a sensitive group of users, each one with different needs, and I wanted to make sure that our solution worked for all of them. I remembered that during the discovery phase of the project, initial patient personas were defined to capture key user characteristics. Taking a business analyst mindset approach, I proactively engaged to work further on these findings and refined the personas by analysing: How they would interact with the application – Considered factors like age, gender and medical history. Example responses for the questionnaire – Mapped how different medical profiles would influence the flow. How their answers would impact therapy recommendations – Ensured the logic accounted for individual patient differences. To illustrate this, I created a personas workflow that maps how different users would complete the questionnaire and how their answers would shape the system’s logic. This approach helped developers and QA engineers to understand the scope of patient needs and later test the system with real-world scenarios. It wasn’t just about logic and workflows, it was about understanding people. This is a conceptual representation of the personas workflow and doesn’t include real project data to ensure privacy. Step 4: Translating requirements into actionable development tasks With a clear solution in place, it was time to translate requirements into development tasks . If you work as a business analyst or a similar role, then you know that technical teams need clarity. Without it, misunderstandings lead to delays and rework. To bridge the gap between business and development, I focused on structured thinking, adaptability and attention to detail, delivering the following: Epics – Mapped the questionnaire functionality within the larger product scope to align it with other core features and long-term goals. User stories – Followed the INVEST criteria to ensure that each user story was well-defined, actionable and delivered clear value. Used the Connextra format to structure user stories while adding business rules, assumptions and preconditions. Acceptance criteria – Outlined expected behaviours, edge cases and exceptions to give developers and QA engineers a clear reference for validating the functionality. The outcome: More than just a better questionnaire Although the patient questionnaire was a key improvement of the client’s healthcare application, it was just one piece of a much larger puzzle. The development process followed Agile methodology, with continuous iterations, stakeholder feedback and incremental improvements across multiple features. The entire rewrite lasted over a year. When the application went live, the client took it over and continued the work independently. The positive feedback suggested that we had addressed major pain points and demonstrated how valuable a proper BA mindset can be for project success. Final thoughts: The power of the BA mindset After the project was completed, I took some time to reflect on lessons learned. Soon I realised that this wasn’t just about rewriting an application or improving a client’s business . It felt like a turning point in my career. It challenged me in ways I hadn’t expected, pushing me to overcome my self-doubt and truly own my role as a business analyst. There were moments when I felt stuck, when I questioned if I had the necessary skills or if I was doing enough. At times, every discussion with the client felt like a battle. But by thinking about the needs of end users, focusing on solving the right problems and adapting my approach, I was able to turn obstacles into opportunities. And that’s the lesson I want to share with other BAs: technical knowledge is important, but your BA mindset is what makes the difference . You won’t always have perfect requirements or ideal collaboration, but if you stay curious, embrace complexity and trust that your work matters, you’ll create real impact. Jelena Frlan Jelena Frlan is a Lead Business Analyst at Q agency. She has been working in the BA field since her college days, collaborating with other IT experts to bring innovative solutions to clients. Her passion for learning motivates her to attend webinars and workshops, including IIBA-AAC certification which helped her further strengthen her expertise in Agile analysis. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 19, 2025 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 19, 2025 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # BBQ Summer Wrap up - Tech Consulting and Software Engineering URL: https://q.agency/blog/bbq-summer-wrap-up/ Q wrapped up summer with a BBQ garden party, featuring over 100 burgers, drinks, sunshine, and a fun evening bringing the team together. BBQ Summer Wrap up | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > BBQ Summer Wrap up BBQ Summer Wrap up September 30, 2019 — 1 min read What better way to celebrate the last summertime sunshine than to move the party outside and host a sizzling BBQ garden party. The end of the summer is a bittersweet time of year. The warmest days of the year are winding down so we, a bunch of sun-seeking opportunists, needed closure and soak up those last warm rays of the sun. We set up a drink station and a burger stand. Our burger master never disappoints. He made more than a hundred burgers this time and the party lasted until the late hours. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 30, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 30, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Behaviour and Gamification Principles as Tools for Digital Product Success - Tech Consulting and Software Engineering URL: https://q.agency/blog/behaviour-and-gamification-principles-as-tools-for-digital-product-success/ Learn how behavioural principles, gamification, and UX practices can create more engaging and successful digital products. Behaviour and Gamification Principles as Tools for Digital Product Success | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Behaviour and Gamification Principles as Tools for Digital Product Success Behaviour and Gamification Principles as Tools for Digital Product Success August 24, 2021 — 4 min read While some projects start with clients’ ideas only, others are more defined, with specific expectations and main features. If the client has only an idea about the project, we usually conduct user research. That is the best way to get solid foundations for further feature ideation. In the case of more defined projects, we go for ideas research. Ideas research is a phase of the Product Strategy that is tailor-made for each project’s needs and client expectations. It involves understanding the main product goals and connecting them to behavioral principles and good UX practices to create digital products that will enhance business goals. This blog will give you insights into this phase through one of our recent projects. Ideas research is a phase of the Product Strategy that is tailor-made for each project’s needs and client expectations. It involves getting into a deep understanding of the main product goals and connecting those to behavioral principles and good UX practices . One of the clients came to us with a request to help them with developing an app for learning. Their goal was to create an app that is number one in the market by allowing dierent ways of knowledge sharing. It was an exciting project that needed a deep understanding of learning mechanisms, especially user motivation and engagement. The client also imagined this app to be playful and fun to use – this is where gamification tools were helpful. The main goal for Ideas research in this project was to dierentiate this app from other similar apps in the market with features enriched with user psychology. The approach we took is divided into three steps: When those fields are merged, we can fully understand ideas that will keep users motivated and engaged for a longer time. Best UX practices To deeply understand the common practices of similar apps, how learning processes are built, and which principles we could use as best-case examples in the ideation of the feature set for our app, we conducted competitors research . Analysis was done into three competitor layers: primary (other driving-learning apps), secondary (learning apps in general), and tertiary (apps with sound behavioral and gamification principles). Some of the apps we looked into are Headspace , Elevate, DuoLingo , and many others. Behavior and users Behavioral science insights take scientifically-backed research into how people process information, think about their social worlds, and make decisions, applying this wisdom to digital products . During our analysis of the behavioral principles in existing apps, we found the eight most essential principles to boost the digital learning process. Together with best UX practices , these rules helped us set the ideation in the right direction. Behavioral principles ideation framework with UX examples Don’t play games with gamification After understanding the behavioral principles, we looked into how we can enable these principles playfully and engagingly. This is where gamification tools came into play. We all play games without being forced to do so. However, games – including video games, gamified apps, and gamified onboarding for financial products – help us discover to recognize patterns, stimulate us to develop strategies, and make the right decisions. The essential feedback loop leads to self-reflection and learning. We concluded that gamification has the same powerful eect on human behavior as nudging, and it can improve eiciency and create value when done right. It is essential to emphasize that gamification is not about creating game elements but applying game tools to solve real-life problems in non-game situations. To ideate around the best gamification tools and behavioral principles, we used the Octalysis gamification framework . Yu-kai Chau has created this framework, and the premise of it is that, instead of starting gamification o with “game elements” and “game tools,” one should always start with how she wants her users to “feel.” Octalysis tool By connecting these three research areas, we created fertile ground for ideation that led us to feature sets grounded in users’ motivation and learning. We wanted to create a learning app that motivates , rather than pushes users to learn, playful, rather than monotonous. At Q, we approach every project based on a detailed analysis of the project’s needs, the client’s expectations, and success with the user. Some projects start with talking to the users , some with talking to the client , and some with understanding users behaviour . But the goal is always the same – to create valuable digital products . Ema Gerovac Ema is a Product Strategist at Q agency. She loves thinking about the human side of digital products. A hard-working perfectionist, especially when it comes to eating sushi and leaving no crumbs behind. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 24, 2021 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 24, 2021 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Benefits of Continuous Integration – Why It’s Critical for Modern Software Teams - Tech Consulting and Software Engineering URL: https://q.agency/blog/benefits-of-continuous-integration/ Learn about the the benefits of continuous integration and why it should be an indispensable practice in building your software development. Benefits of Continuous Integration – Why It’s Critical for Modern Software Teams | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Benefits of Continuous Integration – Why It’s Critical for Modern Software Teams Benefits of Continuous Integration – Why It’s Critical for Modern Software Teams April 9, 2025 — 6 min read Continuous Integration (CI) has become one of the key practices in software development. But what exactly is it, what are the benefits of continuous integration and why should this be an indispensable practice in your team, if it isn’t already? Let’s learn more about this topic in our new article. What Is Continuous Integration? Continuous integration is a practice where developers integrate code regularly, with the code being stored in the common codebase. The merging of code is usually done multiple times a day. As the new code is added, a series of tests is run automatically to ensure that the new changes do not cause any problems in the system. If a problem does occur, one of the key benefits of CI is the feedback you get right away, so the bugs can be fixed more easily. Without CI, developers would have to communicate each new code contribution to other project participants. And that includes coordination not only with developers, but also with the operations team as well. Continuous integration makes this process easier by testing every change in the codebase. Both developers and DevOps engineers use CI, but the difference is that developers use CI on a daily basis, while the DevOps teams build and maintain those CI systems to keep all processes run smoothly. Let’s learn more about the benefits of continuous integration below. 1) Faster Bug Detection Early error detection is one of the biggest advantages of continuous integration. Errors are detected practically immediately, and this way they do not pile up and are not detected when it’s already too late. Without CI, it would be more difficult to find the cause and where the bug came up, meanwhile with CI, bugs are easier to find and can be resolved much faster. Another benefit of early bug detection is a shorter development cycle. When code issues are resolved earlier, this also reduces delays in product delivery and helps everyone involved in the project to meet deadlines more easily. 2) Integration Issues? No More You’ve probably heard of merge conflicts. We’re talking about situations when not-so-well aligned developers within the team try to merge the code, and this leads to errors in the code, integration problems, and sometimes  even to the loss of the code. In contrast to this outdated principle, continuous integration is a practice in which developers frequently commit code to the repository, which leads to much less frequent occurrence of integration problems. Why? Because the system checks every time whether everything is in order, so it can react more promptly and correct errors accordingly. 3) Automated Testing Automated testing and continuous integration go hand in hand, and are almost always paired. This means that the code is tested using testing tools such as GitHub Actions, GitLab CI/CD or Jenkins . It is a well-known fact that automated tests are more precise and much more reliable than manual tests. Why? Simply because with automated tests you reduce the possibility of human error. In the same way, this type of testing helps much faster than manual testing if a new feature creates an error and eventually leads to major problems in the development of your software product. 4) More Transparency & Better Communication If continuous integration is part of your work routine, then you know that the chance to have to deal with (sometimes way too frequent) meetings and calls with teammates is much lower. How so? Because CI tools have clear reports that show the current project status. In other words, everyone in the team can be on the same page regarding the code updates; for example, if a code change in the repository — code commit, led to an error. So, with this, another benefit of continuous integration, the project workflow is more transparent and the need for meetings and pinging colleagues is greatly reduced. Win-win situation for everyone. 5) Teams Are Easier To Scale We already mentioned how CI facilitates work among teammates. But what if the team gets bigger, an that brings along more frequent code contributions, which can lead to code overlap? That’s what CI is here for, immediately integrating and testing inputs and changes . So, when increasing the number of people in the team, CI makes it easier so that everyone works on the same version of the project-related code. New team member? No problem. They can start working on the project immediately and have the overall picture of what’s going on code-wise. 6) Continuous Delivery & Deployment As a rule, continuous integration is inherently connected with continuous delivery and continuous deployment . The difference between CI and continuous delivery is that with CI, the focus is on the constant merging of code into a common codebase. On the other hand, continuous delivery, puts focus on code changes that are automatically built, tested, and deployed to production. Then comes the continuous deployment. An approach where changes are deployed automatically when they pass the testing, making the release process automated. The result of the joint use of these three practices is a shorter feedback loop and a faster and easier iteration of your software product . 7) Higher Quality Product as the End Result Continuing from the previous chapter, and to put it simply, CI (together with CD and continuous deployment) leads to a higher quality software product . And that also includes higher cost reduction, more efficient infrastructure, lighter backlog, and improved maintainability overall. So, using this DevOps approach of gradually building the code and constantly testing changes, the end result is a much better product and, in turn, a much happier customer. Conclusion To sum it up, CI has become an established practice in the software development and DevOps field, without which today’s software development process is unthinkable. From a much shorter time for detecting bugs, greatly reduced integration issues, and greater transparency, to greater scalability and, finally, a higher quality end product — these are all benefits of continuous integration. If you are looking for a reliable partner with skilled people in setting up your CI/CD practices, or you want your software product development process to be faster and more reliable, feel free to schedule a consultation with us . We are here to help you — whether it’s consulting or a future project we’ll be working on together. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 9, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 9, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Bespoke Software: Advantages, Development and Examples - Tech Consulting and Software Engineering URL: https://q.agency/blog/bespoke-software-development-advantages-and-examples/ See real examples of bespoke software, learn about the phases of bespoke software development, its advantages. and cost. Bespoke Software: Advantages, Development and Examples | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Bespoke Software: Advantages, Development and Examples Bespoke Software: Advantages, Development and Examples January 9, 2026 — 6 min read What is bespoke software? Bespoke software is custom-made software. It is developed for one client only, to solve their specific business challenges. It is the opposite of mass-market, off-the-shelf or SaaS software, which are made to cover the widest range of customers possible. Advantages of Bespoke Software 1. Bespoke Software Development Time and Cost Bespoke software development takes time, while you can immediately buy a SaaS subscription or download and install off-the-shelf or open-source software. The phases of bespoke software development are: Strategy Design Prototype development Prototype testing Final product development Final product testing Going live Because of this, at the beginning it is more costly than other software solutions. The price is usually determined by the amount of development time, which is calculated from requirements (all the features and specifications). A bespoke software product is by far the best long-term solution to specific business needs and requirements. Over time, tailor-made software will save you both time and money , because: Upgrades are painless No unnecessary features, only what you need Safer and far more stable than other solutions Best after-sales service Scalability and modularity No subscription or licence fees Easier to learn 2. After-Sales Support Off-The-Shelf Software and SaaS Solutions – Knowledge Base All mass-market, off-the-shelf commercial software has vast online support available for its customers. This primarily comes in the form of knowledge bases, FAQs, tutorials, videos and forums. For example, Microsoft has a huge knowledge base for its Office products. But often, advanced solutions to problems and training have a price tag attached. Many companies profit from courses and certifications tied to their software. If you get stuck, you may attempt to reach support by phone. More often than not, this will lead you through a maze by pressing numbers on your keypad to finally reach an actual human. Frustration, anyone? With SaaS, you will often get an automated response and your ticket will be in queue. If you have opted for an open-source solution and are seeking something specific for your business, chances are you’ll have to hire a developer for that particular technology. Open-Source Software – Community Open-source software (for example: PHP, WordPress, etc.) has by far the largest and best support communities, both online and offline. There are many forums, blogs and other online communities where you will find answers to almost any conceivable question. If that’s not the case, you can post your question and community members will usually answer you very quickly ( StackOverflow is a good example of this). Moreover, there are a myriad of free plugins, extensions and other add-ons that extend the main functionality of open-source software solutions, whether it’s a CMS, web shop or some other product. Bespoke Software – Best Support No other software product comes with the level of support as the one you get with a bespoke software solution. A bespoke software development company will not only respond in the shortest possible time, but will always provide the best possible solution or upgrade. Because they know both your business and technical requirements in detail. Support is provided either via email, over the phone or meetings. You will always know the person who is your contact at the software company – you will meet them in person. 3. Maintenance and Updates A bespoke software product can be updated and extended seamlessly. All updates are tried and tested on the development version first, before being published. You can see and try new features for yourself before going live. This is a huge advantage. Open-source software is the cheapest solution, but updates are rolled out often. If you do not install them regularly, you will have a security problem. For example, millions of websites run on WordPress CMS. The CMS itself has frequent updates as well as its plugins and themes. Updates can sometimes break the design or have compatibility problems with the core installation. I remember when Microsoft redesigned the user interface of all Office products. Older users were frustrated because they couldn’t find their way around the new interface. Some smart people even sold extensions and add-ons which would install the old interface over the new one. With bespoke software, there are no unpleasant surprises because everything is done in accordance with your requests. 4. Security Bespoke software is the safest solution, because custom code is the most difficult to break/hack. Security is built-in right from the start and extra layers of protection can be added if needed. Furthermore, bespoke software solutions are hosted on hand-picked servers where the environment can be optimized for each individual solution to further ensure the safety of your data. Off-the-shelf software publishers often release patches for their products because vulnerabilities show up regularly. Mass-market cloud-based solutions have frequently been hacked . Open-source solutions are prone to attacks, because their source code and vulnerabilities are known. Again, examples like WordPress or Drupal come to mind. Because of their widespread adoption, they are frequently the target of breach attempts. 5. Connectivity, Extensions, Modularity Most often, what you can’t find off-the-shelf is software that can connect the various different aspects of your business. For example, a call centre with a website and the latter with a CRM. There are some mainstream software products which can integrate with other services – like the marketing solution HubSpot, for example. But what if you need a third component tied to the first two? Only custom-made software can solve this. Business growth can be unpredictable. New ideas and opportunities can unexpectedly show up. Bespoke software can always integrate these new needs and requirements into your overall business picture. 6. Learning Curve Each bespoke digital product is a new thing, but the learning curve isn’t steep. The user interface is made to respond to your business requirements. So you already know the terrain. A big advantage is that there are no unnecessary interface elements or software features. No cluttered interfaces, menus with endless options. Just what you need – clear, simple and intuitive . 7. Bespoke Software Examples Times Travel – Example of a Bespoke Web Platform In collaboration with us, The Times Travel created a new web application. In six months, we have implemented UX/UI design, developed custom WordPress themes and built the overall website infrastructure. See our bespoke web platform solution . Subsea7 – Bespoke Software Example A bespoke software for planning, supporting, and executing logistical operations, created for one of the global leaders in the delivery of offshore projects and services in the energy industry. Learn more here . Conclusion – Do You Need a Bespoke Software Solution? If you are a small business, go open source until you grow. There is no sense in buying custom stuff at the beginning – invest your money in marketing and sales to build your client base first. Once your business is stable, you can think of investing in a bespoke software solution. Because in time, you will need to optimize your processes. This is digital transformation, which is best done through bespoke software. At Q Agency, we act as bespoke software consultants and developers. Contact us now for a free consulting session. Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 9, 2026 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 9, 2026 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Bespoke Software Examples - Tech Consulting and Software Engineering URL: https://q.agency/blog/bespoke-software-examples/ Bespoke software examples from different industries demonstrate that complex projects are best approached with a custom solution in mind. Bespoke Software Examples | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Bespoke Software Examples Bespoke Software Examples September 26, 2025 — 7 min read Bespoke software examples from different industries (shown below) demonstrate that complex projects are best approached with a custom solution in mind. It’s nearly impossible to do this with off-the-shelf or SaaS software. Here are the custom digital solutions that we developed for our clients: Stepathlon – sports industry Subsea7 – energy industry Sandoz – web application for the pharma industry Smart Pension – fintech industry Jenz – internal social media network Education industry: End-to-end bespoke software example The Times Travel Custom Web Platform Sela – events management industry IT industry – AI-powered estimation tool 1. Stepathlon – Sports Industry Stepathlon is a virtual fitness platform that offers inclusive challenges for participants of all ages, genders, locations, and physical abilities. The new platform, designed and developed by Q, saw a 3x increase in user engagement compared to the old one. Stepathlon is not just a custom turnkey digital solution, but a customisable app in itself. This was made possible by bringing in the Q team to all phases of the project: Discovery Design Development During the discovery, we helped distill clear user requirements, development milestones and a high-level solution design. On the design side, Stepathlon needed a white-label app for corporations and sports clubs. The focus was on research, wireframing, and prototyping. This resulted in a scalable design system. The developers’ main challenge was integration with Terra, a third-party system that provides data on users’ physical activities. These activities had to match their selected goals, which in turn triggered rewards when milestones were achieved. The rewards were then processed through another third-party system, LiveLike, which updated the leaderboards and reflected user rankings in real-time. 2. Subsea7 – Energy Industry Subsea7 is a global leader in engineering, construction, and project management services for the offshore energy sector. The company provides integrated solutions for the installation and maintenance of subsea infrastructure. Q agency has helped Subsea7’s digital transformation by creating a bespoke software solution composed of: Onshore application for entering the ship log data that runs on vessels. Central onshore application collecting said data, collating and monitoring it. Project management application. Equipment transportation system for streamlining logistics. System for project budget estimation. A dedicated team of 28 experts from Q created it: Back-end and front-end developers, UX/UI designers and quality assurance engineers. 3. Sandoz – Web Application for the Pharma Industry SANDOZ is a market leader in generic pharmaceuticals and a pioneer in biosimilars. Q helped Sandoz to upgrade their Stockout Monitor project, which helps pharmacists have the right information about drug shortages and find their alternatives. The requirements were: Connecting with numerous external services. Loading a substantial amount of data. Requiring continuous synchronisation. Ensuring real-time data accuracy. Ensuring real-time data reliability. Managing diverse APIs. The end result was a bespoke web application with seamless performance, thanks to meticulous planning and a robust architecture. 4. Smart Pension – Fintech Industry Smart Pension , one of the fastest-growing fintech companies in the United Kingdom, offers their clients a digital-first pension and investments platform. We have helped Smart Pension by offering managed digital transformation services via a dedicated team consisting of: Back-end software engineers Quality assurance engineers Product Owners The partnership between Smart Pension and Q lasts more than 6 years and the team employed by Q is a cornerstone of it. After going through the discovery and development phases, the end result was: Implementation of 7 different calculators Improvements on 2 existing integrations Introduction of a bespoke payment retry mechanism Testing calculators on big amounts of data. 5. Jenz – Internal Social Media Network Jenz is a mobile application invented, designed, developed and verified by Q agency, from the ground up. Jenz is a: Internal social network Company’s live newsletter Intranet It is an ideal solution for today’s remote work model. Everything was tailor-made: Product vision Strategic product discovery Brand strategy and identity UX/UI design User flow Mobile app development Data science Quality assurance automation The end result? It became a product of its own, implemented in corporations across fintech, telco, logistics, automotive, food, IT and energy industries. 6. Education Industry: End-to-end Bespoke Software Example For our client, a government entity, we have built an enhanced training management platform from scratch. Everything was tailor-made. It was important to understand many different separate modules and integrate them into a single solution. Our team created unified design components which simplify user navigation. This also increased the speed of development and simplified maintenance. This is a prime example of a bespoke software project where all of our experts, with their unique skills, were involved from start to finish. Our dedicated team consisted of: 1 solution architect 3 back-end developers (PHP) 2 front-end developers (React) 2 designers 1 QA specialist 1 business analyst 1 project manager We helped our client build an enhanced training management platform covering the whole business journey, from licensing of training organisations, obtaining approvals for training programs, to trainees searching for the desired training and monitoring their education and certification progress. The solution is well documented, which is enabling our client’s teams to maintain and extend it, according to their business needs. 7. The Times Travel Custom Web Platform Everyone’s heard about The Times. They are one of the oldest newspapers in Great Britain. NewsUK, the largest British publishing house, partnered with Q to create an end-to-end platform that merges travel experiences with expert insights: The Times Travel . It took us 6 months to implement UX and UI design, develop custom WordPress themes, implement search engine optimisation recommendations and guidelines and build the overall web infrastructure. The result? 15% revenue growth. 8. Sela – Events Management Industry Sela is a leading events management company operating worldwide, based in Saudi Arabia. Via Riyadh is one of its properties, quickly becoming a top luxury destination. Sela’s team, in collaboration with Q, worked on developing a brand new website and mobile application for Via Riyadh. The Q team was responsible for: UX/UI design Partial copywriting Front-end, back-end and mobile development Integration with MappedIn indoor mapping solution The solution was delivered in record time, considering the deadline, content creation and management, 3rd party dependencies, iOS and Android approvals, and finally, creating a solution that can be easily upgraded/enhanced in the future. 9. IT industry – AI-Powered Estimation Tool Our in-house bespoke AI solution automates key estimation processes, reducing time and enhancing accuracy. It meets high standards for reliability and efficiency. It was developed through an in-depth discovery process, starting with a comprehensive presales process audit to identify key pain points in backlog creation, effort estimation, and development planning. Development tools: Flutter Web Supabase Integrations: HubSpot Teamwork Results achieved: Streamlined presales process using AI, end-to-end RFP process automation Intelligent user story creation and estimates Automated SOW and proposal generation Would a Bespoke Software Solution Benefit You? Yes, if you want to have a long-term digital solution that: Actually helps your team get things done. Gets things done the way you want it to. Includes only features that are actually useful (without any stuff that gets in the way of doing things smoothly and efficiently). Doesn’t break when updates arrive (because we take care of any and all software upgrades and maintenance). Is secure and stable, because it’s custom-made. Is scalable – it follows the evolution of your business. Hasn’t got any hidden costs . Is easier to learn, because we will create the necessary documentation. To discuss your software development needs, contact us today: Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 26, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 26, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Best Data Pipeline Tools - Tech Consulting and Software Engineering URL: https://q.agency/blog/best-data-pipeline-tools/ Data pipeline tools move data from one point to another, while transforming it during the transport. See the best ones available. Best Data Pipeline Tools | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Best Data Pipeline Tools Best Data Pipeline Tools March 20, 2025 — 7 min read Data pipeline tools form the data pipeline method and its processes. The method itself serves to load raw data from various data sources (databases, spreadsheets etc), transform it and then store it in a data warehouse, data lake or database. Basically, data pipeline tools move data from one point to another, while transforming it during the transport. For each stage of the process, you may need different ones. There are many available on the market, both open-source and commercial. Sometimes, one tool can cover multiple stages. How to select the optimum data pipeline tools? Scalability Can your current systems handle your current and projected data needs? Your new data pipeline tools must be able to handle increasing amounts of data. Cloud-based pipeline solutions provide scalability. Keep in mind that there are no end-to-end solutions, especially if you have specific needs, which most organisations do. Data sources Make sure that the tools you select support your current data sources and analytics solutions, as well as those you may need in the future. Data integration Companies want to make better business decisions, which in the case of data means achieving operational efficiency using automated workflows, real-time data processing and consolidating data scattered across different sources. The best data pipeline tools resolve these challenges by automating outdated manual processes, such as ETL (extract-transform-load). They clean, transform and integrate data. Also, they integrate well with your existing infrastructure. Security and compliance Is the tool of your choice compliant with data protection regulations such as GDPR and CCPA? Does it provide data encryption, privacy and security? Check with your legal team. Support and documentation Since the data pipeline is a critical factor in your business operations, choose providers that are skilled, knowledgeable and have fast response times. See if the documentation is detailed and comprehensive. Cost Take into account the cost of initial investment, license, implementation, maintenance and evaluate the total cost of ownership of your data pipeline tool. See if it provides a good return on investment. With numerous tools available, choosing the right one can be challenging. Here, we explore some of the best data pipeline tools available in 2025 , categorized based on their primary role in the ETL process. 1. Extraction Tools (Data Ingestion & Collection) Best Commercial: Fivetran Description : Fully managed ELT service that automates data extraction from various sources. Most Common Use Cases : Syncing SaaS applications, databases, and cloud storage to data warehouses. Location : Cloud-based, operates globally with support for major cloud providers. Competitors : Stitch, Matillion, Airbyte Best Open-Source: Airbyte Description : Open-source ELT tool with a growing list of connectors to extract data from diverse sources. Most Common Use Cases : Ingesting data from APIs, databases, and cloud apps into warehouses like Snowflake or BigQuery. Location : Self-hosted or cloud-deployed (offers managed cloud version too). Competitors : Singer, Meltano, Apache NiFi Most Widespread: Apache NiFi Description : Data ingestion tool designed for real-time, high-volume data streams. Most Common Use Cases : IoT data streaming, real-time log collection, and enterprise data flows. Location : Self-hosted, commonly deployed in large-scale distributed environments. Competitors : Apache Kafka, Google Dataflow, AWS Kinesis 2. Transformation Tools (Processing & Enrichment) Best Commercial: Matillion Description : A cloud-native ELT tool focused on transforming data within modern cloud data warehouses. Most Common Use Cases : Cloud-based transformations for Snowflake, Redshift, and BigQuery. Location : SaaS-based, integrates with major cloud platforms. Competitors : Fivetran, Talend, Informatica Best Open-Source: DBT (Data Build Tool) Description : SQL-based transformation tool enabling analytics engineers to build robust data models. Most Common Use Cases : Transforming raw data into analytics-ready models within cloud data warehouses. Location : Cloud and self-hosted options available. Competitors : Dataform, Meltano, Apache Beam Most Widespread: Apache Spark Description : Distributed computing engine for large-scale data transformation and analytics. Most Common Use Cases : Big data processing, machine learning workflows, and streaming analytics. Location : Deployed on-premise, in Hadoop clusters, or cloud environments (AWS EMR, Databricks, etc.). Competitors : Apache Flink, Google Cloud Dataflow, Dask 3. Loading Tools (Storage & Destination Management) Best Commercial: AWS Glue Description : A serverless data integration service designed for automating ETL workloads. Most Common Use Cases : Loading structured and unstructured data into AWS-based storage solutions. Location : Cloud-based, deeply integrated with AWS ecosystem. Competitors : Google Cloud Dataflow, Azure Data Factory, Informatica Best Open-Source: Singer Description : Open-source standard for writing reusable ETL scripts to load data into various destinations. Most Common Use Cases : Moving data from APIs, databases, and files to warehouses with minimal setup. Location : Self-hosted, with compatibility across multiple cloud and on-prem solutions. Competitors : Airbyte, Meltano, Talend Open Studio Most Widespread: Talend Description : A comprehensive data integration platform supporting ETL, data quality, and governance. Most Common Use Cases : Enterprise-grade ETL, data lake loading, and cloud migration. Location : Hybrid, available as both self-hosted and cloud-based solutions. Competitors : Informatica, IBM DataStage, Microsoft SSIS 4. Orchestration & Workflow Automation (Managing End-to-End Pipelines) Best Commercial: Astronomer (Managed Apache Airflow) Description : A managed platform for deploying and scaling Apache Airflow pipelines. Most Common Use Cases : Automating workflows, task dependencies, and scheduled jobs in a scalable way. Location : Cloud-based, with support for hybrid deployments. Competitors : Prefect Cloud, AWS Step Functions, Google Cloud Composer Best Open-Source: Prefect Description : Workflow orchestration tool designed for dynamic pipeline execution. Most Common Use Cases : Automating and monitoring ETL jobs with Python-first workflows. Location : Self-hosted or cloud-based (Prefect Cloud). Competitors : Dagster, Apache Airflow, Luigi Most Widespread: Apache Airflow Description : The de facto standard for workflow scheduling and orchestration. Most Common Use Cases : Managing DAG-based workflows for ETL, machine learning, and cloud operations. Location : Self-hosted, widely used across cloud and on-premises environments. Competitors : Prefect, Dagster, Google Cloud Composer 5. Lakehouse & Hybrid Tools (Storage, Processing & Orchestration Combined) Best Commercial: Databricks Description : A unified analytics platform built on Apache Spark, combining data lake storage, transformation, and AI/ML workflows. Most Common Use Cases : Big data processing, data science, AI/ML model training, and analytics. Location : Cloud-based, available on AWS, Azure, and Google Cloud. Competitors : Snowflake, Google BigQuery, AWS Athena Best Open-Source: Apache Iceberg Description : An open-source table format designed for large-scale data lakes, offering ACID transactions and schema evolution. Most Common Use Cases : Managing structured data in a lakehouse, improving query performance, and simplifying analytics workflows. Location : Self-hosted, integrates with major cloud and on-prem storage solutions. Competitors : Delta Lake, Apache Hudi, Snowflake Most Widespread: Snowflake Description : A cloud-based data warehouse with built-in lakehouse capabilities, supporting ELT and AI-driven analytics. Most Common Use Cases : Storing and querying structured & semi-structured data, enabling large-scale BI and machine learning. Location : Cloud-based, available on AWS, Azure, and Google Cloud. Competitors : Databricks, Google BigQuery, AWS Redshift Conclusion Selecting the right data pipeline tool depends on factors such as scalability, integration needs, real-time processing requirements, and budget constraints. Whether you need an open-source workflow orchestrator like Apache Airflow , a fully managed service like AWS Glue, or an automated data integration tool like Fivetran, each option has unique strengths. By evaluating your specific needs, you can choose the best data pipeline tool to enhance your data processing workflows. Contact us now to discuss your data engineering needs: A big thank you to Petar Apolonio , who co-authored this article. Petar is Manager of Data Science Excellence at Q agency. A mathematician and data enthusiast, he is a data engineer by profession. Petar oversees all the projects that involve data science, data engineering and data analysis for our clients, as well as internal ones. Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 20, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 20, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Blockchain, Smart Contracts and Mining - Tech Consulting and Software Engineering URL: https://q.agency/blog/blockchain-smart-contracts-and-mining/ Explore blockchain, smart contracts, tokens, cryptocurrencies, and mining, and learn how these technologies work together. Blockchain, Smart Contracts and Mining | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Blockchain, Smart Contracts and Mining Blockchain, Smart Contracts and Mining November 12, 2018 — 8 min read Blockchain was first mentioned in 1991 and designed to timestamp data so it could not be backdated or changed in any way. This technology was not used until Satoshi Nakamoto adapted it to use it for Bitcoin in 2009. What is Blockchain and how it works? Blockchain is a digital book in which transactions executed in cryptocurrencies are written chronologically and publicly . It works as a distributed ledger, which means that it works as a database that is constantly shared and synchronized on multiple locations. This means that cyber-attacks are much harder to perform and transactions are faster and safer . The transaction is a transfer of values between two digital wallets that are registered on the Blockchain. Each digital wallet has a hash address (eg: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT). For transactions to happen, variables are needed, such as: address of the recipient, address of the sender, and amount of cryptocurrency. Blockchain is simply, as its name says, a chain of blocks. Block Each block inside of blockchain has its own hash, a hash of previous block, and some data. The data stored within a block depends on the type of Blockchain. Bitcoin blockchain stores the details of the transaction such as the address of the recipient, the address of the sender, and the amount that has been sent. Block’s hash can be described as a digital signature. Hash identifies each block and its content . When a block is created, hash needs to be calculated and it is added inside of the block itself. If data inside of the block is changed, its hash is also changed and it is not considered the same block. Each block contains its own hash and hash of a previous block , which means that block 3 is referring to block 2, and block 2 is referring to block 1. The first block inside of the blockchain is special because it doesn’t contain a hash from the previous block. That block is called the Genesis block. If the second block is changed, its hash is also changed which means that that block and every subsequent block are no longer valid. Proof of Work (Pow) is a mechanism that slows down the process of creating and adding new blocks to the blockchain. On Bitcoins blockchain, it takes about 10 minutes to add a new block to the blockchain. If we try to calculate what is the maximum size of a blockchain in number of block it would be 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935 And it would take about 3,671,743,063,080,802,746,815,416,825,491,118,336,290,905,145,409,708,398,004,109,081,935,347 years to reach the maximum size if a new block is added every 15 seconds. What is a Smart contract and how it works? Smart contracts were first mentioned by Nick Szabo in 1997. Smart contract is identical to a regular contract, the only dierence is that a Smart contract is completely digital. Smart Contract Smart contracts are programs that were written to automatically control the transfer of values between two or more sides after all of the predefined conditions are satisfied. Smart contracts are a program code, meaning that they are not limited to the type of scenarios like “If X happens, then do Y”, but can be used literally for anything , as long as it’s within the limitation that the data must be written in Blockchain. How does Smart contract work: – properties are coded – terms of contract are coded – both expressions and assets are entered as blocks in Blockchain – once the contractual provisions are met by both parties, the contract is executed – each transfer of funds is made on the basis of the contract’s terms The most popular blockchain on which you can make a Smart contract is Ethereum blockchain. Ethereum has been carefully designed to support smart contracts. Ethereum The language in which Smart contracts are written in Solidity. It was created for Ethereum and its base is C++, Python, and JavaScript. Syntax is very similar to JavaScript. Smart contracts were made to communicate with Ethereum Virtual Machine (EVM) which is the heart of Ethereum. EVM can execute a code of arbitrary algorithmic complexity. In computer science terms, Ethereum is “Turing complete”. Bitcoin Blockchain also has some support for Smart contracts but it is limited, so Bitcoin is not used as often as Ethereum. Tokens and coins The two terms used to describe units of dierent crypto values are coin and token . Their meaning and use significantly overlap, but there are significant dierences between them that are often misunderstood. Altcoins are all those crypto values that are alternative to Bitcoin. A lot of altcoins are Bitcoin variants created by Bitcoin Blockchain’s granulation (aka Fork) to improve some of its functions . Such coins were built using the Bitcoin open code protocol . Some examples of such coins are LiteCoin, Bitcoin Cash, Bitcoin Gold, etc… Bitcoin, Bitcoin Gold, Bitcoin Cash On the other hand, there are a multitude of altcoins that are not derived from Bitcoin’s blockchain. Such coins are made on their special blockchain with their own protocol and some of the examples of such coins are Ethereum, Ripple, NEO, etc… Tokens are nothing but value units that arise from smart contracts on one of the existing blockchains. Today, the vast majority of tokens are based on the Ethereum platform. Tokens are created and distributed to the public via the Initial coin oering (ICO) which is a starting point of token sharing/selling. It is considered as an alternative form of investment collection and has emerged outside the traditional financial system. This investment-gathering model has helped many successful crypto-tools to get the means to launch ideas, platforms, and business. Anyone can participate in the ICO of a new cryptocurrency if they are convinced and recognize that the project will be worth in the future and that the value of the purchased crypt valued will increase, but also if they just want to support the project. ICO is in principle an event that takes place over a couple of days where a new token is oered that you can replace most often for Bitcoin or Ethereum. There may be a limit or goal of ICO to finance them, meaning that each token you buy in ICO will have a predefined price and the price will not change during the defined duration of a particular ICO, meaning that the token number is static , i.e. limited and always the number of the token remains the same all the time. The second variant is that the price is dynamic. If more money is collected, the price of an individual token increases , and the number of tokens remains the same. The third variant is that the price is static (eg: 1ETH = 1 token) and every time someone pays 1ETH, a new token is created. Airdrop is a way to receive tokens, that may be worth something later, for free. Most Airdrops require people to subscribe to their company’s Telegram channel, track Twitter channels, share posts, and so on. Although each Airdrop has its own rules What does mining cryptocurrency mean and how does it work? Mining is a process in which transactions for dierent crypto values are verified and added to the blockchain . In this process, a miner is a person who confirms and records transactions on the blockchain. The new block contains transactions and on average every 10 minutes, one of the miners verifies a record, i.e. a transaction block. The miners provide computing power to the Bitcoin network, and in return, they have the chance to get Bitcoin. In order for the miner to receive the aforementioned prize, it competes against other miners in solving a complex mathematical problem based on a cryptographical hash algorithm. The solution to this problem is called “Proof of Work”. Proof that the miner used a significant computer eort. The basic security models for Bitcoin are the PoW algorithm and its solution resulting in the reward and right of publishing the transaction to a new block that will be written on the blockchain. Miners use their rigs for mining crypto values. Rigs are computer systems and their main component is a GPU . A CPU core can execute 4 32-bit instructions per clock using a 128-bit SSE instruction, or 8 via AVX using a 256-bit SSE instruction, whereas a GPU like the Radeon HD 5970 can execute 3200 32-bit instructions per clock using its 3200 ALUs or shaders. This is a dierence of 800, or 400 in case of AVX, times more instructions per clock. Mining rig Filip Varda He pays attention to the smallest details and makes sure our mobile applications work. If you need to talk about the newest mobile trends or gadgets, he’s the guy to go to. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 12, 2018 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 12, 2018 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Bridging AI and Business: The Story of Our In-House Application - Tech Consulting and Software Engineering URL: https://q.agency/blog/bridging-ai-and-business-the-story-of-our-in-house-application/ Discover how our in-house application harnesses the power of AI to improve efficiency and drive innovation in our IT agency. Bridging AI and Business: The Story of Our In-House Application | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Bridging AI and Business: The Story of Our In-House Application Bridging AI and Business: The Story of Our In-House Application May 8, 2023 — 10 min read Introduction As an innovative IT company, we’ve recognized the transformative power of artificial intelligence (AI) . Embracing this future, we’ve developed an in-house application that integrates AI into our daily operations, leveraging OpenAI’s API . This blog post uncovers the thought process behind this development and the transformative benefits it brings. Our journey with AI may seem like stepping into uncharted territory, but through our experiences, you’ll discover how we’re streamlining processes, enhancing productivity, and fostering innovation . Join us as we unravel how our application democratizes AI, integrating it as a user-friendly tool that empowers every department uniquely. Demystifying AI Artificial intelligence, particularly in the context of Language Learning Models (LLMs) like ChatGPT , is a marvel of modern technology. However, it can sometimes feel like a locked treasure chest to those who aren’t fluent in programming and data science. Our in-house application is the key that opens this chest, offering everyone the opportunity to harness the immense potential that lies within. To truly understand how our application simplifies interaction with AI , it’s essential to grasp the basic concept of AI and LLMs. At its core, AI is a machine’s ability to mimic intelligent human behavior. LLMs, on the other hand, are a type of AI that learns to generate human-like text based on the data they’re trained on. Picture ChatGPT as a gifted artist. This artist has been trained by observing and learning from a diverse range of art styles. Given a blank canvas (a prompt or instruction), the artist can create a beautiful painting (generate text). However, the artist needs clear guidance on what to paint. Without direction, the result might be abstract, off-topic, or simply not what you expected. This is where our application, with its array of templates , comes into play. Think of these templates as detailed sketches for our artist. They’re pre-written instructions or prompts that guide the AI in creating the desired output. To give a fun analogy, consider the AI as a master chef and the templates as recipes. A master chef has all the skills to cook a wide variety of dishes. However, without a specific recipe, the chef wouldn’t know whether to prepare pasta, stir-fry, or a gourmet dessert. The recipe provides clear instructions on what ingredients to use, how to prepare them, and the cooking process to follow, leading to a predictable and delicious outcome. Similarly, our templates guide the AI, providing clear instructions on what input to consider, the process to follow, and the desired output. This makes the interaction with AI predictable, efficient, and user-friendly , turning the often-intimidating world of AI into a friendly kitchen where everyone can cook up their unique requirements. The power and purpose of templates Templates play a crucial role in making AI accessible and user-friendly for everyone. They act as a bridge between the user and the AI , ensuring seamless and efficient interaction. But what makes templates so powerful and valuable? The first advantage of templates is their simplicity. Templates are pre-written instructions designed to guide AI without the need for users to write complex code or scripts. This eliminates the steep learning curve often associated with AI interaction and allows users to harness AI’s capabilities with ease . Another significant benefit of templates is their versatility. They cater to a wide range of use cases, addressing various needs within an organization. By providing a diverse set of templates , we empower users to tap into AI’s potential for multiple purposes, increasing productivity and efficiency across the board. To better understand the usefulness of templates, let’s explore some examples: Simplifying Complex Concepts : Often, there’s a need to break down complex ideas into simple, understandable terms. Writing such explanations can be a time-consuming and challenging process. Our ‘Simplify Complex Concepts’ template comes to the rescue by guiding the AI to generate easy-to-understand explanations. Users only need to input the complex concept, and the template takes care of the rest, ensuring that the essence of the concept remains intact while making it more accessible. Creating User Storie s: In product development, user stories are invaluable for understanding the user’s perspective and ensuring that the product meets their needs. However, creating user stories based on functionality descriptions can be labor-intensive. Our ‘User Story Generation’ template simplifies this process. By inputting the functionality description, users can obtain detailed user stories, saving time and effort while maintaining consistency in the output. Summarizing Large Amounts of Text : Distilling large volumes of text into concise summaries without losing vital information can be an arduous task. Our ‘Text Summarization’ template streamlines this process, enabling users to generate comprehensive summaries with minimal input. The user only needs to provide the original text, and the template generates a succinct summary that retains the maximum value of the content. In summary, templates serve as an indispensable tool for harnessing the power of AI in a user-friendly and efficient manner. By offering a diverse range of templates, we enable users across the organization to leverage AI for their specific needs , paving the way for increased productivity and innovation. Tailoring to Departmental Needs In the complex tapestry of an organization, each department is like a distinct thread, each with its unique color, texture, and role in the overall pattern. Just as the beauty of the tapestry comes from the careful interplay of these individual threads , the efficiency of an organization is the result of seamless collaboration and understanding between its departments. One of the most significant challenges that organizations face is ensuring that each department can perform its tasks efficiently without getting entangled in the complexities of technology, especially as AI becomes increasingly integral to business operations . This is the challenge that our application, with its personalized templates, aims to address. Think of our templates as a translator, converting the universal language of AI into the unique dialect of each department . This translation makes AI more accessible, allowing each team to harness its capabilities without the need to learn complex coding or AI scripting. Let’s delve a bit deeper into how our templates empower the individual units in our company: Business Analysis (BA) : BAs are the bridge between business needs and technical solutions. They need to distill complex business requirements into specifications that developers can understand. Our templates, especially those for simplifying complex ideas and summarizing large volumes of text, can be a game-changer for BAs, saving them time and enhancing clarity in communication. Quality Assurance (QA) : QA teams play a critical role in ensuring the quality of the software. Customized templates can assist in generating test cases, writing bug reports, or even assessing test coverage, bringing consistency and speed to their work. Project Management (PM) : PMs often have the mammoth task of keeping track of multiple project components. Tailored templates can transform raw project data into organized plans, risk assessments, and progress reports, acting as a valuable assistants to PMs. Development : Developers are the builders, and our templates are like advanced tools in their kit. From generating pseudo-code to creating clear documentation, templates can be a significant time-saver for developers. Sales : In the dynamic world of sales, time is of the essence. Custom templates can help sales teams generate compelling product descriptions, persuasive sales pitches, and timely customer follow-up emails, ensuring they never miss a beat. Management : For the management team, templates can be like a personal analyst, translating raw data into insightful performance reports, strategic plans, or team updates, aiding in informed decision-making. Product Strategy : In the ever-evolving tech landscape, staying ahead of the curve is crucial. Templates can assist the Product Strategy team in performing market analysis, competitor comparison, or strategy formulation, providing them with the insights they need at their fingertips. Talent (HR) : For HR, finding the right talent efficiently is paramount. Tailored templates can help in crafting precise job descriptions, screening candidate profiles, and generating meaningful interview feedback, speeding up the hiring process. By personalizing templates to each department’s needs, we’re not just simplifying tasks; we’re empowering each team to leverage AI effectively in their daily operations. This personalization fosters a sense of ownership and familiarity with AI, encouraging its adoption across the organization. The ripple effects of this are profound: enhanced efficiency, consistent outputs, saved time, and ultimately, an organization that is better equipped to innovate and grow in the AI-powered future . After all, a tool is only as good as its user’s ability to wield it, and our templates ensure that every department can wield the power of AI with confidence and ease. Road ahead As we continue to embrace the ever-evolving world of AI, we’re committed to staying at the forefront of innovation, integrating the latest advances into our application. Our vision is to create an application that not only meets the needs of our company but also drives productivity and efficiency to new heights . One exciting feature in our pipeline is the integration of speech-to-text capabilities. This will allow users to input their requirements and instructions using voice commands rather than typing them out. Speech-to-text can be particularly beneficial for users on-the-go , those who prefer verbal communication, or when dealing with complex instructions that are easier to express vocally. By offering users the flexibility to interact with AI using their preferred communication style, we aim to make AI even more accessible and user-friendly . Another module we’ve already integrated into our application caters specifically to designers. Our image generation module allows designers to create images from natural language prompts or generate variations of existing images, streamlining the design process and fostering creativity. This module demonstrates our commitment to expanding the capabilities of our application beyond text-based AI, incorporating cutting-edge advancements in other areas of AI as well. As the field of AI continues to grow rapidly, we’re dedicated to monitoring the latest improvements and implementing those that align with our company’s needs. Our goal is to continuously refine and enhance our application, ensuring it remains a powerful tool that keeps pace with the ever-changing AI landscape. In addition to ChatGPT, we’re also exploring the integration of other AI tools into our business processes. As more AI-powered tools and technologies emerge, we will evaluate their potential to improve our output, streamline operations, or simplify tasks. By embracing a diverse range of AI tools , we hope to cultivate an ecosystem of innovation within our organization , driving growth and fostering a culture of continuous improvement. Our journey has just begun, and as we forge ahead, we’re excited to unlock the full potential of AI for our company. We firmly believe that by staying agile and responsive to the latest advancements in AI, we can create an application that not only meets our needs today but also evolves to meet the challenges of tomorrow. Conclusion As we navigate the landscape of technological evolution, AI has emerged as a beacon, guiding us toward new frontiers. Our in-house application encapsulates our commitment to harnessing AI’s transformative power , making it accessible and useful for every department in our organization. The heart of our application lies in our customized templates, simplifying interactions and amplifying efficiency across our company. With future-forward features in our pipeline, like speech-to-text integration , and a keenness to incorporate diverse AI tools, we are dedicated to staying at the forefront of AI innovation. Our journey with AI is not just about leveraging a new technology; it’s about fostering a new way of thinking, a new way of working . As we continue to explore and expand, we’re excited about the opportunities that lie ahead. PS: The entirety of this blog, encompassing the structuring, titling, detailed descriptions, and elucidations of our in-house solution, was crafted leveraging the capabilities of our own application, demonstrating its practical effectiveness and versatility – even this PS was written using it. Ivan Zvonimir Popovic Ivan is a highly-skilled Flutter developer with a solid background in .NET. He possesses a comprehensive understanding of the development process, from front-end design to back-end functionality, enabling him to deliver seamless and efficient solutions. In his free time, Ivan enjoys staying active in the gym, staying informed about the latest developments in the field of cryptocurrency, and cultivating new ideas for his projects. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 8, 2023 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 8, 2023 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Building from Within: Setting Up an Effective Center of Excellence - Tech Consulting and Software Engineering URL: https://q.agency/blog/building-from-within-setting-up-an-effective-center-of-excellence/ Learn more about our Center of Excellence, a hub of key experts providing additional value to our clients. Building from Within: Setting Up an Effective Center of Excellence | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Building from Within: Setting Up an Effective Center of Excellence Building from Within: Setting Up an Effective Center of Excellence September 17, 2024 — 5 min read Center of Excellence in Q is a hub of key experts, all seasoned professionals from each of the key tech domains with a clear mission of sharing knowledge , increasing the quality of our deliverables and providing additional value to our clients . The idea behind the Center of Excellence (CoE) was straightforward but impactful: to utilize a core team of existing Q experts to make Q a more value-driven company and support the implementation of our new business model. Establishing the CoE was a crucial part of our new organizational structure and a key enabler of our new strategy. By gathering top talent in one place, the CoE was designed to serve as a foundation, providing the expertise and support needed to implement our new approach and drive Q forward. The Center of Excellence was not just a structural shift but a strategic initiative aimed at empowering innovation and operational excellence. By centralizing expertise, the CoE became a hub of knowledge and best practices, enabling cross-functional collaboration and accelerating the adoption of cutting-edge technologies. Defining the purpose of CoE The purpose of Q’s Center of Excellence is to advance and promote excellence in its field through innovation, collaboration, and the development of best practices in particular by: Setting the technical standards and processes to ensure that the quality of our delivery continuously improves as we grow bringing the value to our Clients Enhancing the value of our services, through integrated team collaboration within core delivery team or via independent engagements by thoroughly understanding client pain points and needs Supporting the growth of all engineers in the company through managing the tech excellence network and leading knowledge management processes Staffing from within The Center of Excellence at Q is a cornerstone of our strategic plan, establishing a strong foundation for domain specialization. Throughout the setup process, we’ve identified that both formal and informal organizational structures are crucial for successfully implementing new processes around CoE. To achieve this, we’ve utilized the expertise of our top professionals in key technology areas, including Frontend (including a Design and Mobile), Backend, Data, Solution Architecture, DevOps, Project and Product Management, Quality Assurance, and Business Analysis. These individuals not only possess deep technical knowledge but also have significant hands-on leadership experience, making them well-suited to lead their respective “horizontal” teams. Their leadership experience and understanding of team dynamics within each tech domain are vital for the smooth adoption of new processes. Previously held formal authority by CoE members is now channeled into enabling processes that emphasize technical knowledge growth and quality enhancement. In our fast-paced environment at Q, we must respond quickly to client needs. Therefore, we’ve taken a pragmatic approach to establishing the CoE. This involves balancing the “on-demand services” we provide to the company with the careful implementation of quality oversight practices. We continually tweak our approach based on feedback from our internal customers. An integral aspect of the CoE is our focus on internal Research and Development (R&D). By fostering innovation and encouraging experimentation within our teams, we aim to stay ahead of technological advancements and industry trends. This R&D focus not only enhances our service offerings but also drives continuous improvement in our processes and solutions. We recognize that governance structures can sometimes face resistance during implementation, leading to adoption challenges if a strategy-first approach is rigidly applied. By listening to our teams, adapting our processes, and integrating a strong R&D component, we aim to ensure the CoE’s successful integration and ongoing effectiveness. Forming the Center of Excellence from within the organization offers several advantages that significantly benefit both the team and the company. By promoting from within, we leverage existing employees’ deep understanding of our corporate culture and values, which enables a smoother transition and greater acceptance of new processes. Furthermore this approach increases engagement and motivation, as team members feel recognized and valued for their contributions. Looking ahead The establishment of the Center of Excellence at Q is an exciting step forward. This initiative isn’t just about setting technical standards and improving the quality of our deliverables, it’s about creating a space where our experts can come together to share knowledge and collaborate more effectively. We believe this will help us deliver better results for our clients and foster a culture of continuous learning and improvement within our company. What makes the CoE special is the people who are part of it. By bringing together seasoned professionals with a wealth of experience in their respective fields, we’ve built a team that’s not just knowledgeable but also capable of leading and inspiring others. This blend of expertise and leadership is helping us tackle the challenges of our ever-changing industry and meet our clients’ needs more effectively. It’s not always perfect, and we’re learning and tweaking things as we go, but that’s part of the process. Looking ahead, we’re excited to see how the CoE will evolve. It’s already playing an important role in supporting various operational processes. We know there will be bumps along the way, but with our team’s dedication and the collaborative spirit of the CoE, we’re confident that we’re on the right path. If you wish to exchange experience in the CoE realm or just to share a different perspective please write on matija.popovic@q.agency. Matija Popovic Experienced General Manager | Project and Process Management | Operations & Business Development ? With 20 years of hands-on experience in General Management, Operations Management, Business Process Improvement, Project Management, PMO, Business Analysis, CRM, and Business Development. ? Cultivated international perspective through roles in multinational environments, including valuable insights gained at the Big 4. ? Proficient in guiding cross-functional teams to streamline processes and drive positive change, prioritizing teamwork and shared success. ? Passionate about creating a culture of empathy and resilience in the team, promoting both professional development and personal well-being. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 17, 2024 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 17, 2024 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Business Talks - Meet Our Clients through New Video Series - Tech Consulting and Software Engineering URL: https://q.agency/blog/business-talks-meet-our-clients-through-new-video-series/ Meet Q’s clients through Business Talks, a video interview series featuring insights into their businesses, projects, and collaboration with Q. Business Talks - Meet Our Clients through New Video Series | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Business Talks – Meet Our Clients through New Video Series Business Talks – Meet Our Clients through New Video Series November 9, 2021 — 3 min read When the lockdown started, we changed the form of communication, especially the internal one, and shifted towards filming videos. Soon, videos became our standard communication tool. YouTube served as an excellent platform for swiftly adapting to the new era of filming, and our YouTube channel quickly grew into a big project. To read more about our YouTube journey, here you can read our blog about How YouTube Transformed Our Communication and Helped Us Stay Connected . At first, our videos were for internal communication only. But as we got better at producing video content, we sensed the potential in making more client and business-oriented videos. That’s when we decided to start Business Talks . The concept behind the Talks Business Talks aims to introduce both Qumans and the general public to our clients and connect a name with a face. Moreover, the series is a great tool for attracting more customers. Seeing happy and satisfied customers and hearing more about how we work builds a sense of trust. Q Business Talks are in a format of an interview in which our CEO, Filip Ljubic, interviews one client each month, either online over Zoom or in person. You can find the series on our YouTube channel or on our Business Talks playlist . Our client “medi“ won the German Innovation Award for a project we did together. Every Business Talks episode has ten questions : Three are about them as a client or a business Three are about our collaboration and the project Three are about the person that represents the client in the video In the last question, we ask the guests to say what they have in mind and share their last thoughts. Clients featured in Business Talks The first episode of Business Talks started with Alex Blattman , CEO of MaxBrain. MaxBrain was the first big client that Q started to work with five years ago. After that episode, Filip hosted three more big clients: Moritz Neise – IT Manager Business & Digital Solutions in “medi“, Dr. Tomas Chamorro-Premuzic – Chief Talent Scientist at ManpowerGroup, and Frank Luijckx – Co-owner of Gene-5. The Business Talks series now counts five episodes! The last episode was filmed with Airex in our Headquarters. They visited us after two years that we haven’t had them as our guests in Zagreb. Watch Q Business Talks with Airex . One of our loyal clients is Manpower group. Business Talks videos are visible to the public and for anyone who wants to know more about us and our projects. This is an excellent opportunity to learn more about the IT industry and its clients and a great way to get first-hand information about us . Our Youtube channel has more than 41.6k views and over 260 active subscribers . All of our videos are promoted and published on our Facebook and LinkedIn pages. Subscribe to our channel , and if you’re our client and interested in being our next guest in the Business Talks series, contact your dedicated Q Key Account Manager, we’d be glad to have you. 🙂 Marta Juricic She is a marketing and PR enthusiast responsible for developing, implementing, and executing strategic marketing plans. Classy girl with a bit of hood in her, and an attitude which she loses when there’s a dog nearby. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 9, 2021 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 9, 2021 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Case Study: Migrating Jenz from React Native to Flutter - Tech Consulting and Software Engineering URL: https://q.agency/blog/case-study-migrating-jenz-from-react-native-to-flutter/ Learn how Jenz migrated from React Native to Flutter, improving app stability, reducing bugs, and achieving feature parity across iOS and Android. Case Study: Migrating Jenz from React Native to Flutter | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Case Study: Migrating Jenz from React Native to Flutter Case Study: Migrating Jenz from React Native to Flutter February 7, 2022 — 4 min read In this case study, I will give you a short overview of why the decision to transfer the existing React Native app codebase to Flutter was made, how we did it, and our experience doing it. What is Jenz? Jenz is an internal social network that works like your company’s live newsletter and a mobile version of your intranet. It transforms internal communications and gives your company’s culture an additional boost. Jenz started as Q agency’s internal project. The backend was developed in PHP using the Symfony framework and the admin interface uses JavaScript . Mobile application was written using React Native by Q agency’s Javascript team. Jenz , already from the very beginning, gained a lot of traction with its users, and soon, first clients outside Q agency started using the app. Why did we decide to rewrite and use Flutter? A rewrite was pending for a while, as delivering new features, as consistent delivery of new features and concurrent bug fixes had resulted in technical debt. This was due to multiple factors, the main one being that the app was based on a POC. It did go through an iteration of refactoring, but an architectural issue remained due to a lack of developer seniority on the project. The developer’s main area of expertise was Javascript and the web platform they were still getting to know all the nooks and crannies of working in the mobile ecosystem. All of this resulted in slower feature deliveries and an increase in regression bugs. The regression bug, which is a bug that causes a feature that worked correctly to stop working after a particular event. To secure platform compatibility, it was apparent the project should be moved to the Mobile department , but the hybrid requirement still remained. Flutter was not initially used since it was still in alpha and React Native was and is still widely used as a viable mobile hybrid solution. Meanwhile, the mobile team started migrating towards using Flutter as a default option. How did we do it? At first, a small team of two Flutter developers was assigned to start rewriting the app. In a little over two weeks, they managed to have a fully working proof of concept app running on iOS , Android and web . At the time, Flutter for the web was still in beta, so it was decided to go with mobile apps only, with the possibility of reusing a significant portion of code for future web versions of the app. Two more Flutter developers joined the team in November 2020. By the end of December, the Flutter app had feature parity with React native app that had more than a year’s head start. Despite the short development time, the app was more stable, with fewer bugs than the React native app. In January, some new features were added to the app. By mid-February, the app was thoroughly tested and ready for release. There was no room for errors because users were awaiting promised improvements . Jenz was released to production in mid-February. After the initial release of the Flutter app development , the team was scaled down to two at first, then to just one mobile developer. As a result, one developer was able to add new features regularly, work on improving and expanding existing features, and keep the app up to date, which included upgrading most of the codebase to null safety. A small team could develop most of the new features quickly, thanks to using many of the great 3rd party packages available for Flutter. Flutter’s support is growing rapidly, and more service providers ( Firebase , Amazon Amplify …) are treating Flutter as an equal platform to native development oering Flutter versions of their SDKs. Thanks to switching to Flutter framework, Jenz, as well as Flutter itself, have proven to be reliable , easily maintainable and upgradable solutions throughout the last year. What did we make of the whole process? While Flutter is not perfect for every use case, a significant percentage of apps can be developed using nothing other than Flutter and Dart , providing significant savings in development time and maintenance cost. For those cases where future features can’t be implemented in Flutter, there are several easier ways that integrate native code within flutter applications. Zvonimir Grebenar He has been developing iOS apps with Objective C and Swift on and off for more than 10 years. For the last two years, he's also been writing Flutter apps, and for the last 6 months, he has worked on the Jenz mobile app. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 7, 2022 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 7, 2022 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Clutch Crowns Q agency as One of the Top 1000 Companies on Their Platform - Tech Consulting and Software Engineering URL: https://q.agency/blog/clutch-crowns-q-agency-as-one-of-the-top-1000-companies/ Q agency is proud to announce that we’ve been recently recognized for our incredible services and invaluable efforts on Clutch. Clutch Crowns Q agency as One of the Top 1000 Companies on Their Platform | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Clutch Crowns Q agency as One of the Top 1000 Companies on Their Platform Clutch Crowns Q agency as One of the Top 1000 Companies on Their Platform December 15, 2022 — 2 min read A lot of companies are partnering with development companies to help create amazing projects and solutions together! Companies like Q agency have been one of the leaders in this space. Founded in 2013, our team has been able to create amazing outputs for global brands, enterprises, agencies, and startups. Our team of more than 350 experts is here to guide you throughout the process. On that note, our team is proud to announce that we’ve been recently recognized for our incredible services and invaluable efforts in the industry. Ladies and gentlemen, our company is excited to announce that we’ve been named one of the top 1000 B2B companies on Clutch’s platform for 2022. This is such an amazing achievement for us and we can’t wait to celebrate this with all of you. In case you haven’t heard about Clutch , they are an established platform in the heart of Washington, DC, committed to helping small, mid-market, and enterprise businesses identify and connect with the service providers they need to achieve their goals. We would like to thank everyone who helped us in achieving this award! Most especially Clutch and their team, and of course, our amazing clients who supported us throughout the years. This award represents all the hard work and dedication our team has put into our services. We are passionate about creating the best solutions for our clients and this recognition represents all of that. Let’s get started! Tell us about your business by contacting our team today. Share your project with us and we will get back to you ASAP. Mihaela Cudina GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 15, 2022 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 15, 2022 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Clutch Honors Q agency As One Of The Leading Usability Testing Companies For 2022 - Tech Consulting and Software Engineering URL: https://q.agency/blog/clutch-honors-q-agency-as-one-of-the-leading-usability-testing-companies-for-2022/ Q agency is recognised by Clutch as one of the leading usability testing companies for 2022, highlighting its UX research expertise and client-focused digital solutions. Clutch Honors Q agency As One Of The Leading Usability Testing Companies For 2022 | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Clutch Honors Q agency As One Of The Leading Usability Testing Companies For 2022 Clutch Honors Q agency As One Of The Leading Usability Testing Companies For 2022 March 22, 2022 — 3 min read Q agency is the #1 fastest growing design and development company in Europe. With over 300 experts , we design and build digital solutions and provide dedicated teams for global brands, enterprises, agencies, and startups. With that in mind, we are truly proud to announce that according to Clutch research , Q agency is recognized as one of the leading usability testing companies for 2022 ! “We are thrilled to be recognized as one of the Clutch leaders.” – Filip Ljubic, CEO, Q agency What is usability testing? Usability testing is a popular UX research methodology in which the researcher (as the moderator) asks a participant (ideally someone who would use the product) to perform tasks using specific user interfaces to get feedback about that interface. The only way to get user experience design right is to test it, and with usability testing, the researcher gets the idea of what works and what needs changing in the design. At Q, we oer moderated and unmoderated types of usability testing. In the moderated testing , the researcher guides the users through the tasks, observes their behavior, and receives feedback. In unmoderated testing , we use a program where we design test-like tasks that users solve, after which we get results and statistics of solutions that work and don’t. For context, Clutch provides independent, quantitative, and qualitative analysis on leading services firms which makes this recognition even more honorable. “Their speed of delivery, quality, and flexibility stand out.” – CEO, Autonomous Vehicle Company Each year, Clutch celebrates the highest-performing companies through the Leader Awards . The Clutch Leader Awards are only granted to the highest-performing B2B companies , so we’re incredibly gracious that Clutch has recognized our merit and top-tier work. Getting a leader award The awards and recognition we received throughout the years are made possible by our clients. Without them, we wouldn’t be where we are today. We are immensely grateful to those who took the time to evaluate how our services impacted their businesses and left a review on our Clutch profile . Here’s what they have to say about working with us: “They were very responsive and communicated well. We mostly coordinated through email. I’d have weekly check-in calls on Fridays with my main point of contact, with other quick calls as needed.” – Neil Gordon, Creative Director, 265 Media Do you have a Question? We got the Answers! Let’s get started! Please fill in the form to learn more about you and your project. Marta Juricic She is a marketing and PR enthusiast responsible for developing, implementing, and executing strategic marketing plans. Classy girl with a bit of hood in her, and an attitude which she loses when there’s a dog nearby. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 22, 2022 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 22, 2022 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Cook, Eat, Bond - Tech Consulting and Software Engineering URL: https://q.agency/blog/cook-eat-bond/ Q team leads came together for a fun cooking team-building experience, preparing French recipes and strengthening team relationships. Cook, Eat, Bond | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Cook, Eat, Bond Cook, Eat, Bond October 18, 2019 — 1 min read Food and events around food bring people together and create relationships. We truly believe that the magic of creating a meal together inspires people to connect even better so we decided to gather all of the team leads and organize Cooking team building. These activities are the perfect blend of good food, competition, and fun to encourage the group to work together as a team and enjoy each other’s company. Provided with all the necessary tools and a variety of ingredients, we entered the kitchen to prepare the menu of the day and learn specific french recipes. With the support of the Travel cook club founders, our cooking format turned into a really exciting culinary experience. Our main objective was to enjoy the time spent together. There was no fierce competition, just a lot of laughter and positive energy. It’s an unusual, engaging way to get to know each other and build or reinforce relationships with colleagues or partners. Enjoying a glass of nice champagne while eating the French meals we prepared certainly enhanced the festive mood and communication among the team members so we will definitely come again to try some new exotic recipes. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 18, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 18, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Corporate App Development Explained: Types, Key Differences, and Development Steps - Tech Consulting and Software Engineering URL: https://q.agency/blog/corporate-app-development/ Corporate app development 101: what are the two types, key differences, and how to develop it right? Read all about it in our blog post! Corporate App Development Explained: Types, Key Differences, and Development Steps | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Corporate App Development Explained: Types, Key Differences, and Development Steps Corporate App Development Explained: Types, Key Differences, and Development Steps March 25, 2025 — 9 min read Corporate app development is a major driver within the area of software development in today’s world. It can provide your client with a software product, that is, an app that meets their customers’ specific needs . Corporate apps are usually divided into two types. These two are internal-facing and customer-facing applications. Of course, each of these two types has its own special purpose and caters to a different end customer. In this article, we’ll show the difference between internal-facing and customer-facing apps; and as an example of an internal-facing app we’ll present the case study for Jenz, an employee engagement app developed and used by Q. Also, we’ll go through what to consider when developing a corporate app, and review the steps needed for its development. Let’s get started. 1) Internal vs Customer-Facing Corporate App Development As the name suggests, internal-facing apps are designed to be used within the organization itself, with the aim of increasing the level of communication and boosting the productivity of company employees. Examples of internal-facing apps: HR management software solutions: HiBob, Workable Project management tools: Asana, Trello Internal communication apps: Jenz, Slack One example of an internal communication tool is Jenz. An internal social network that we use on a day-to-day basis as our main communication tool for important official announcements. Employees themselves can also use Jenz to post their own posts, so it’s often called ‘Instagram for employees’. The second type, customer-facing apps are developed for external customers — as the name itself suggests. They provide insight into the services and products that a particular business offers and aim to improve the overall customer experience. Just a few examples of customer-facing apps (among many) are Revolut in the fintech industry, Booking.com in the travel industry, and Allianz in healthtech. What sets internal- and customer-facing apps apart? Target Audience. Internal-facing apps are primarily developed for use within organizations, while customer-facing apps are intended for a user demographic who has the specific need and benefits from using your app. Main objective. With internal-facing apps, the most common main goal is to increase productivity and facilitate communication and workflows within the company. On the other hand, with customer-oriented apps, there’s a wide array of services that make the app interact directly with customers, facilitate the use of the app easier, and ultimately the business growth of the company who owns the app — based on the app’s success. Security and Compliance. Both types of applications must strictly adhere to security and compliance measures, but with those oriented to internal use, it is important that the data of both users and companies are protected, meanwhile with customer-facing apps, it’s important that they adhere fully to the protection of their users’ data. Because just one data breach can mean huge financial losses and loss of consumer trust in your product. 2) What to Consider During Corporate App Development Here are the main considerations to take into account when developing these types of apps. What’s the App’s Goal? First and foremost: define the basic purpose of the app and ask questions like What problem can my app solve? Who is my target audience? How can my app help them? These are the questions you should ask right away to set up proper goals from the very start. Regular Maintenance Nothing can live long without proper and regular maintenance, including [corporate] apps. From fixing bugs in the code, updating the entire software and ensuring that your app is compatible with new OS versions — all of this is necessary to make the user experience with your app as seamless as it gets. Scalability Options Most often, all apps start as simple software solutions that later need to be updated with new functionalities and features. Or to be ready for a larger number of users sometime in the future. The key is the ability to scale your app, which ensures that your product is ready and prepared for growth in all aspects. Automation Automation is indispensable nowadays because it speeds up various processes and makes it easier for us humans not to waste time on repetitive tasks. Instead, we can focus more on strategy, planning and organisation when developing this type of app. In short, automation equals higher efficiency. And that’s why when developing corporate apps, keep in mind how to automate, or in other words, optimise development processes as best as possible. How to Measure Success? The essence of every software product, including corporate apps, is to bring success — in terms of revenue, overall business growth, etc. For this, there are indicators of success, a.k.a. KPIs that help us to get insight into whether our product’s been successful. Here are some of the main KPIs to look out for: Engagement metrics Adoption rate Downtime occurrences Overall responsiveness rate Customer satisfaction rates/scores App retention rate Return on investment (ROI) 3) Steps in Corporate App Development Every process, app development process included, requires well-structured steps. Here are the main steps put into the context of developing a corporate app. Defining the Purpose. Have you aligned your app’s objectives with your business goals? This is your starting point. Collecting Requirements. This step is where you need to involve all stakeholders so that everyone involved in the project knows what is expected of them. Design Phase. Needless to say, the app design that meets the needs of any user is a must. Both user interface and user experience need to be top-notch if you want your app to become and remain successful. Development Phase. This phase includes software engineers who will develop your application. From frontend to backend and all other roles related to the product’s development. The earlier steps are also crucial so that developers have fewer potential obstacles during the development process. Testing. There are two main types of tests that are performed primarily by QA testers, though some may also be performed by developers. The main two types are manual and automated testing, and functional and non-functional testing. All of these tests are designed to check for potential errors and ensure a seamless user experience. Deployment. Whether it’s an internal application or one intended for external users, in the deployment phase, it is released for use. Here, it’s important that all parameters are met so that the app can ultimately be available to the end user with the UX being seamless. First Users’ Insights. Feedback from first users is more than helpful, always. The app can be made available to a test group who can provide feedback and identify specific issues that need to be fixed before releasing the app en masse. In other words, to the entire target audience. 4) Jenz — Case Study Jenz is a mobile app developed originally here at Q, with its main purpose to serve as an internal social network, live newsletter, and intranet for companies. Nowadays, when many employees work remotely, with its features, Jenz helps encourage better communication and employee feedback. Also, as an official company intranet and social media network, it helps strengthen the sense of community within the company. We use it at Q as well, but the list of clients using this app goes beyond borders, and even extends to as far as Australia. Discovery. The discovery phase started with diving deep into the research oriented towards employees’ needs. And of course, the team made sure to take into account the best industry practices. Our discovery team came up with the features that proved to be of greatest benefit to employees — those that will boost productivity and increase engagement, and, consequently, employee satisfaction. Design. The design of the Jenz app is sleek and visually appealing. It includes features like anonymous shouts to which the company management replies transparently, and frequent polls and surveys that also contribute to increasing transparency from higher management towards employees. Also, there’s a feature called ‘kudos’, an easy and effective employee recognition perk that lets your colleagues know you appreciate the work they’ve done. Development. The team of developers used the Agile approach during the development phase. Regarding frontend, Flutter team stepped onto the stage, whereas on the backend side, PHP developers were in charge. The result? A prime example of a fully functional internal-facing corporate app development. Results Achieved: Employee Satisfaction: +9/10 Kudos Sent: +6.5k Anonymous Shouts Sent: +800 What do these results show? That this internal-facing app achieved its purpose. A higher level of employee engagement and their overall satisfaction are higher than before Jenz was introduced to the company. Conclusion Corporate app development involves setting clear goals and careful planning of the entire process. In the article, we mentioned that there are two types of corporate apps: internal-facing and customer-facing apps. With either type, the same principle applies. Their aim is primarily to increase efficiency (whether it’s the people within an organization or external customers), and create an above-average user experience in order to ensure the success of the product itself. Structure in the development process is key, and we’ve shown this in the example of our app, Jenz, an example of an internal-facing app. The success of Jenz shows us that with a good strategy and well-crafted plan execution, this app can turn into an extremely successful product. With both types of corporate apps, the most important thing is that it brings value to end users. We are here to provide value with our skilled and experienced professionals. Feel free to contact us if you have an idea for the development of a corporate app. A big thank you to Vinka Durdevic for co-authoring this blog post. A Project Manager with 12 years of experience in IT, she transitioned from her role as a software developer more than five years ago. Vinka enjoys working on dynamic projects and loves collaborating with teams to get things done. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 25, 2025 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 25, 2025 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Critical Thinking in Software Testing - Tech Consulting and Software Engineering URL: https://q.agency/blog/critical-thinking-in-software-testing/ Critical thinking has one of the biggest parts of a QA Engineer's tasks so let's dive into critical thinking in software testing Critical Thinking in Software Testing | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Critical Thinking in Software Testing Critical Thinking in Software Testing February 2, 2026 — 6 min read When you find yourself questioning the idea behind the application you’re testing, acceptance criteria in user stories, design, and application – you are actually doing critical thinking . There are different types of thinking, but critical thinking is one of the most important in testing because as a Quality Engineer, you can’t just accept everything you hear, read or see. You need to question if it matches business logic and end-user needs. This blog post will introduce you to critical thinking, what it looks like in software testing and how to practice critical thinking so keep reading! What is Critical Thinking at All? Critical thinking is analyzing information to make a judgment. It requires a person’s mental effort to observe all available facts before making judgments . Besides that, critical thinking is reasoning – why is something just like it is. Critical thinking helps: understand relationships between different things or ideas recognize the importance of arguments recognize priorities and arrange them well and wisely build arguments catch inconsistencies and errors approach and solve problems make a decision As you may notice, all mentioned is something the Quality Engineer does every day. Maybe you weren’t aware of it, but critical thinking is a big part of the testing activities . Let’s see some examples of how critical thinking impacts testing. How Critical Thinking Impacts Testing Critical thinking improves the quality of the work in general, but let’s see its impact on software testing through the following examples : 1. Requirement Analysis Imagine that you’re testing an application that displays financial statistical data.  There can be a user story with a requirement to ‘mark with a green color higher numbers’. This can be valid in the case where profit for the last month is displayed because the higher number means better result and green color is considered as something good . On the other side, there can be a cost for the last month displayed. In this situation, a higher number is not something we aim for. Therefore, the high cost shouldn’t be displayed in green color , especially if it’s higher than the profit. It’ll be good to display it in red color as it has a negative effect. If you accept this requirement , the end user could see his cost for the last month marked with green color although it’s greater than the profit . But if you recognize that as an issue, you can discuss with stakeholders how to manage this situation. That’s why analyzing and questioning requirements is important . 2. Design When looking into the design , there are probably going to be some inconsistencies . Let’s say that there are multiple confirmation dialogues across the application. It’s often a case that all dialogues will have only the X button for closing the dialogue, and then there is a dialogue with both X and the Close button for closing. Design should be consistent , and all confirmation dialogues in this example should have the same behavior for closing the dialogue. 3. Testing Whatever testing method you use, you are comparing something, analyzing , checking for improvements , searching for inconsistencies , and prioritizing . All mentioned are critical thinking activities. Testing is the activity that probably takes the most of the Quality Engineer’s time so the better critical thinker the Quality Engineer is, the better will be her/his testing results . 4. Reporting Bugs Imagine reporting a bug that the user can access the billing page, but missing to add a precondition that the user doesn’t have an admin role that can access the billing page. Suppose a developer who works on the reported bug isn’t familiar with user roles and permissions. In that case, he/she could restrict all users from accessing the billing page which could be a critical defect in production. At the moment of writing the bug report, it’s a low possibility that there are written requirements that include all preconditions needed for a specific bug report, so we need to think about it, recognize all important information and write it down. 5. Writing Test Cases This is a situation where critical thinking is crucial because test cases need to be specific , clear enough, and include all needed information. Test cases are written according to the existing requirements, but they cover general test cases and edge cases that are not written in the requirements. All those test cases that are not covered by requirements are the result of critical thinking. And sometimes when you observe requirements you might catch a requirement that is not clear enough or misleading . Maybe you haven’t considered critical thinking as a big thing, but you can see that it’s a big part of the Quality Engineer’s daily tasks . Besides that, critical thinking can be used consciously which will lead to better results. How to Practice Critical Thinking The great thing is that Quality Engineers can practice critical thinking every day. Although this is something that comes naturally to Quality Engineers, critical thinking can be improved , and here are a few ideas on how to do it in daily Quality Engineer tasks : Whatever you do, question your assumptions – if you made any wrong assumption, you’ll probably recognize it by asking simple questions. Besides that, it helps you to understand why is something just like it is When analyzing requirements or acceptance criteria, don’t take them for granted . Check for any i nconsistencies , missing or misleading information, make sure to understand all requirements, always ask questions, and don’t be shy to ask questions Think several moves ahead so you can make better decisions , provide more information , notice possible issues and give more accurate feedback . Also, you’ll probably get some new ideas . Put yourself in others’ shoes . This will help you understand other people, the way they think, and what are their needs Analyze your previous work. Look into the results you made and the desired results. Try to figure out if you could do anything differently to do a task more effectively These simple steps can do a lot for the quality of testing, and also generate more unseen questions, scenarios, or new ideas. Conclusion Among different thinking types, critical thinking is one that is the most used in software testing . If the Quality Engineer starts working on his/hers critical thinking skills , the Quality Engineer can improve them so remember – the better the critical thinker Quality Engineer is, the better will be her/his testing results . Jelena Scevic Jelena is a QA Engineer that raises software quality with her skills and various testing techniques, but her favorite skill is critical thinking. When she’s not testing, she’s probably reading crime books or hanging with her family and friends. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 2, 2026 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 2, 2026 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Create Custom Events With Symfony5 - Tech Consulting and Software Engineering URL: https://q.agency/blog/custom-events-with-symfony5/ Learn how to create and use custom events in Symfony 5. Explore event dispatching, listeners, and best practices for scalable application architecture. How to Create Custom Events With Symfony5 | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Create Custom Events With Symfony5 How to Create Custom Events With Symfony5 November 8, 2025 — 12 min read h, those events. Probably every modern application uses them on some occasion, and naturally, Symfony has its own built-in components to dispatch events and subscribe to them. It also has a few of its own build-in events that get dispatched on some points of the request -> response cycle. In this blog will see how to dispatch events manually when we need them and create subscribers, which will do some actions when an event occurs. Requirements The only component that really needs to be installed, for events to work, is the Symfony’s event dispatcher component. composer require symfony/event-dispatcher That’s it for required ones for events dispatching to work. For a project that utilizes events, a few more will probably be needed: Doctrine ORM composer require symfony/orm-pack Maker bundle (for easy create entities and controllers) composer require --dev symfony/maker-bundle Serializer composer require symfony/serializer Annotations composer require doctrine/annotations Why Events? Let’s answer the big question first, why do I need events anyway? Could I do a bunch of logic in my services instead? Well, yes and no. Sure it is possible to code everything in one on more services, but events are more SOLID. They usually (and in Symfony, they do) utilize two design patterns, observer and mediator. This ensures that they are easily extendable, and that is their main strength. In practice, this means that you can always create a new subscriber to the event, without a requirement for any other additional logic. Subject They are lots of possible usage for events in real-life applications, and it will depend on the type of applications and their internal architecture. So for our subject, let’s event that will be triggered when the user is deactivated. This is probably something most applications will use, and it is a good example for this post. When deactivating the user, the next steps will probably be needed: 1. Send the user a notification, informing him/her that account was deactivated 2. Clean up the database (relationships, flags…) 3. Deactivate user 4. Log stu Next, we will create an event that will trigger a delete call and a subscriber to do all those steps. Entity First things first, let’s create a simple user entity we can use later on. We will use the Symfony maker bundle for this. php bin/console make:entity User Our simple user entity class should look like this. namespace AppEntity; ​ use DoctrineORMMapping as ORM; use SymfonyComponentSerializerAnnotationGroups; use SymfonyComponentValidatorConstraints as Assert; ​ class User {     public const DEFAULT_ROLE = 'ROLE_USER'; ​     /**      * @ORMColumn(name="id", type="integer")      * @ORMId      * @ORMGeneratedValue(strategy="IDENTITY")      * @Groups({"user:get", "user:id"})      */     private ?int $id = null; ​     /**      * @ORMColumn(name="email", type="string", length=180, nullable=false)      * @Groups({"user:get", ""user:create""})      */     private string $email; ​     /**      * @ORMColumn(name="roles", type="json_array")      * @Groups({"user:roles"})      */     private array $roles = [User::DEFAULT_ROLE]; ​     /**      * @ORMColumn(name="password", type="string", length=255, nullable=false)      * @AssertNotCompromisedPassword(message="user.validation.password.compromised")      * @Groups({"user:create"})      */     private string $password = ''; ​     /**      * @ORMColumn(name="active", type="boolean", nullable=false, options={"default":1})      * @Groups({"user:get", "user:create"})      */     private bool $active = true; ​     public function getId(): ?int     {         return $this->id;     } ​     public function setId(?int $id): User     {         $this->id = $id; ​         return $this;     } ​     public function getEmail(): string     {         return $this->email;     } ​     public function setEmail(string $email): User     {         $this->email = $email; ​         return $this;     } ​     /**      * @return array|string[]      */     public function getRoles(): array     {         return $this->roles;     } ​     /**      * @param array|string[] $roles      * @return User      */     public function setRoles(array $roles): User     {         $this->roles = $roles; ​         return $this;     } ​     public function getPassword(): string     {         return $this->password;     } ​     public function setPassword(string $password): User     {         $this->password = $password; ​         return $this;     } ​     public function isActive(): bool     {         return $this->active;     } ​     public function setActive(bool $active): User     {         $this->active = $active; ​         return $this;     } } Annotations here are only doctrine orm definitions and groups that will be used by the serializer later on. Event Class First, let’s create a class that will represent an event itself. In Symfony, every custom event class must extend the base Event class. So let’s create the UserDeactivateEvent class: namespace AppEvent; ​ use AppEntityUserUser; use SymfonyContractsEventDispatcherEvent; ​ class UserDeactivateEvent extends Event {     public const NAME = 'user.delete'; ​     protected User $user; ​     public function __construct(User $user)     {         $this->user = $user;     } ​     public function getUser(): User     {         return $this->user;     } ​     public function __toString(): string     {         return sprintf('User ID: %s', $this->user->getId());     } } From a namespace, we can see that all events need to go in the Event directory in our src(App) directory. We are passing the user object to the constructor to access it later on in our subscribers when we build them. The easy way to think of event objects is a package that encapsulates data we will later need to create logic that will execute when the event is triggered. Subscriber Now we have our event; next, we need to create a “listener” that will execute some logic when the event is triggered. Subscribers are those listeners; they “subscribe” to the event, and event classes are places when we can write logic that needs to be done when the event is triggered. Event listeners and event subscribers both exist in Symfony. I’m using subscribers because they are more reusable and won’t trigger an exception if we define multiple methods. Our subscriber class needs to execute four steps described in the subject part; this is how it looks like: namespace AppEventListener; ​ use AppEventUserDeactivateEvent; use DoctrineORMEntityManagerInterface; use SymfonyComponentEventDispatcherEventSubscriberInterface; ​ class UserDeactivateSubscriber implements EventSubscriberInterface {     private EntityManagerInterface $entityManager; ​     public function __construct(EntityManagerInterface $entityManager)     {         $this->entityManager = $entityManager;     } ​     public static function getSubscribedEvents(): array     {         return [             UserDeactivateEvent::NAME => [                 ['deactivateUser', 10],                 ['databaseCleanup', 9],                 ['logUserDeactivated', 8],                 ['sendNotification', 7],             ],         ];     } ​     public function deactivateUser(UserDeactivateEvent $event): void     {         $user = $event->getUser();         $user->setActive(false);         $this->entityManager->flush();     } ​     public function databaseCleanup(UserDeactivateEvent $event): void     {         $user = $event->getUser(); ​         //do database cleanup stu     } ​     public function logUserDeactivated(UserDeactivateEvent $event): void     {         $user = $event->getUser(); ​         //log stu     } ​     public function sendNotification(UserDeactivateEvent $event): void     {         $user = $event->getUser(); ​         //do notification stu     } } We put all our event subscribers in the EventListeners directory Each subscriber needs to implement EventSubscriberInterface, which defines one method to implement, getSubscribedEvents. Here we define all subscriber methods that need to be called and assign them a priority. It defines the order in which assigned methods will be executed. First, a method with the largest priority integer is executed, and from there goes from highest to lowest. So in our example, with deactivating the user, first, we want to deactivate the user. After that, we will do database clean-up and log that user was deactivated. The last thing we do is notify the user that his/here’s account was deactivated. We pass the UserDeactivateEvent object that encapsulates or user object to each method to access it via getter and use it later on. Dispatching Event Event class: check, Event subscriber: check. All that’s left to do is dispatch the event and let the subscriber do its stu. Let’s create a controller used to delete user calls (fake in this example). The easiest way to do so is by using maker bundle. namespace AppController; ​ use AppEntityUserUser; use AppEventUserDeactivateEvent; use AppEventListenerUserDeactivateSubscriber; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentEventDispatcherEventDispatcherInterface; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAnnotationRoute; use SymfonyComponentSerializerSerializerInterface; ​ class UserDeactivateController extends AbstractController {     private SerializerInterface $serializer;     private EventDispatcherInterface $eventDispatcher; ​     public function __construct(SerializerInterface $serializer, EventDispatcherInterface $eventDispatcher)     {         $this->serializer = $serializer;         $this->eventDispatcher = $eventDispatcher;     } ​     /**      * @Route("/user/deactivate/{user}", methods={"POST"}, name="user_deactivate")      */     public function __invoke(User $user): JsonResponse     {         $event = new UserDeactivateEvent($user);         $this->eventDispatcher->addSubscriber(new UserDeactivateSubscriber());         $this->eventDispatcher->dispatch($event, UserDeactivateEvent::NAME); ​         $json = $this->serializer->serialize($user, 'json', ['groups' => ['user:get']]); ​         return new JsonResponse($json, JsonResponse::HTTP_OK, [], true);     } } We are using a single responsibility controller, so it defines only one method: invoke. First, we instantiate user UserDeactivateEvent and pass it a user object to encapsulate. After that, we are using injected EventDispatcher object to set a subscriber to use for this event. Finally, we are dispatching the event. After the user object is used and modified by a subscriber, we return it as a JSON string, using the serializer component. Note that subscribers also can be added to the event using services.YAML file, we will address that later on. With the controller, we have actually finished the base of our logic. The only thing left to do is clean it up a bit and add some extensibility. Cleanup Time! Any application will likely have more than one event, so it could be handy to create some repository for our events. Symfony already uses repositories for its DB queries. We can do something similar for our events. In high layers of our application, we can have just one method call for our events. Also, we can define a service that will handle event dispatching. Let’s create a service first: namespace AppService; use PsrLogLoggerInterface; use SymfonyComponentEventDispatcherEventDispatcherInterface; use SymfonyContractsEventDispatcherEvent; class DispatchEventService { private EventDispatcherInterface $eventDispatcher; private LoggerInterface $logger; public function __construct(EventDispatcherInterface $eventDispatcher, LoggerInterface $logger) { $this->eventDispatcher = $eventDispatcher; $this->logger = $logger; } public function dispatchEvent(Event $event, string $eventName, array $subscribers = []): void { if (!empty($subscribers)) { array_walk($subscribers, function ($subscriber) { $this->eventDispatcher->addSubscriber($subscriber); }); } $this->eventDispatcher->dispatch($event, $eventName); //log dispatched event $this->logger->info('Event dispatched '.$eventName, [$event]); } } We will create a base repository where we will inject our service, and then any other event repository can extend this base one. We will have only one, UserEventRepository. namespace AppRepositoryEvent; use AppServiceDispatchEventService; class BaseEventRepository { protected DispatchEventService $dispatchEventService; public function __construct(DispatchEventService $dispatchEventService) { $this->dispatchEventService = $dispatchEventService; } } namespace AppRepositoryEvent; use AppEntityUserUser; use AppEventUserDeactivateEvent; use AppEventListenerUserDeactivateSubscriber; use AppServiceDispatchEventService; use DoctrineORMEntityManagerInterface; class UserEventRepository extends BaseEventRepository {     private EntityManagerInterface $entityManager;     public function __construct(DispatchEventService $dispatchEventService, EntityManagerInterface $entityManager)     {         $this->entityManager = $entityManager;         parent::__construct($dispatchEventService);     }     public function dispatchUserDeactivateEvent(User $user): void     {         $event = new UserDeactivateEvent($user);         $subscribers = $this->getUserDeactivateEventSubscribers();         $this->dispatchEventService->dispatchEvent($event, UserDeactivateEvent::NAME, $subscribers);     }     private function getUserDeactivateEventSubscribers(): array     {         return [             new UserDeactivateSubscriber($this->entityManager),         ];     } } The logic for dispatching events is not transferred to the repository and service. In the future, if we wish to add new events or new subscribers to an existing event, we can do it relatively simply by adding a new event to the repository or subscriber to events subscribers getter. The only thing left to do is clean up our controller make it even more simple. namespace AppController; use AppEntityUserUser; use AppRepositoryEventUserEventRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAnnotationRoute; use SymfonyComponentSerializerSerializerInterface; class UserDeactivateController extends AbstractController { private SerializerInterface $serializer; private UserEventRepository $userEventRepository; public function __construct( SerializerInterface $serializer, UserEventRepository $userEventRepository ) { $this->serializer = $serializer; $this->userEventRepository = $userEventRepository; } /** * @Route("/user/deactivate/{user}", methods={"POST"}, name="user_deactivate") */ public function __invoke(User $user): JsonResponse { $this->userEventRepository->dispatchUserDeactivateEvent($user); $json = $this->serializer->serialize($user, 'json', ['groups' => ['user:get']]); return new JsonResponse($json, JsonResponse::HTTP_OK, [], true); } } One more thing could be done if the number of events/subscribers gets large, which is to add a factory for subscribers and call factory methods instead of defining getters directly in a repository. And now this code is mean and clean. So it’s fully baked. But wait a bit; I did mention that there is a way to register our subscribers using Symfony’s services.YAML file, let’s check that out next. Services and Subscribers Until now, we registered our subscribers by using addSubscriber method directly on the dispatcher. Another way to do this is by using services.yaml and register our subscribers there. We can do that by adding this line. AppEventListenerUserDeactivateSubscriber:         tags:             - { name: kernel.event_subscriber, event: user.deactivate } This tells Symfony that we want to add a new subscriber for our event user.deactivate. And subscriber class is UserDeactivateSubscriber. If we do it like this, then repositories and DispatchEventService are no longer needed to remove those files. Also, we need to adapt our controller to the new logic. We will remove the repository call and add direct event dispatch instead. namespace AppController; use AppEntityUserUser; use AppEventUserDeactivateEvent; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentEventDispatcherEventDispatcherInterface; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAnnotationRoute; use SymfonyComponentSerializerSerializerInterface; class UserDeactivateController extends AbstractController {     private SerializerInterface $serializer;     private EventDispatcherInterface $eventDispatcher;     public function __construct(         SerializerInterface $serializer,         EventDispatcherInterface $eventDispatcher,     ) {         $this->serializer = $serializer;         $this->eventDispatcher = $eventDispatcher;     }     /**      * @Route("/user/deactivate/{user}", methods={"POST"}, name="user_deactivate")      */     public function __invoke(User $user): JsonResponse     {         $this->eventDispatcher->dispatch(new UserDeactivateEvent($user), UserDeactivateEvent::NAME);         $json = $this->serializer->serialize($user, 'json', ['groups' => ['user:get']]);         return new JsonResponse($json, JsonResponse::HTTP_OK, [], true);     } } This looks much simpler, but it’s not always the best solution. Next, let’s look at the pros and cons of both approaches. Services.yaml vs Repository Showdown The last question we will address is which approach to use. Should you build event repositories for your project, register your event in services, and dispatch it? As it always does, it depends on application architecture and how you build your events, are simple or more complex. This is a listing of some pros and cons of both approaches. Services.yaml approach Pros Easy to use, dispatching of events is very simple and it avoids additional repositories and services. Takes advantage of symphony’s authowire feature for registering events. Cons If your event logic is more complex(building objects before passing them to events, passing multiple objects…), there will be lots of event dispatching logic all over your code instead of in a single place. Same problem as above, if the application utilizes a large number of events. Repository approach Pros Defines as a single place to put all your event dispatching. It’s a good approach if the application has a lot of events or logic; for some of them, it is a bit more complex. If you don’t use the Symfony framework, but only the dispatcher component, it’s the only approach available, so it’s more universal. Cons More code to write; it is a bit of overkill if event dispatching logic is fairly simple. Do not use Symfony’s native way to deal with services, which is by using the YAML file. So which way would be best for you? As always, it depends on you and your application needs. Now our code is double-baked, so it sure has to be well done 🙂 Thank you for reading this post, and I hope it was helpful. Mario Ozuska Mario's favorite things are solving complicated problems and possibly learning something in the process. His life motto is, "If you need it, I will build it." GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 8, 2025 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 8, 2025 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Dado’s sweet 43! - Tech Consulting and Software Engineering URL: https://q.agency/blog/dados-sweet-43/ Q celebrates CTO Dado’s 43rd birthday with cake, sweets, and a fun break from work with the team. Dado’s sweet 43! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Dado’s sweet 43! Dado’s sweet 43! May 21, 2019 — 1 min read Celebrating birthdays never gets old. Neither does our CTO 🙂 Dado had an awesome birthday party in the oice. That was a great excuse for all of us to eat cakes and sweets in the middle of the day and to take a break from work 🙂 Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 21, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 21, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # What is Data Modelling: Types, Techniques & Best Practices - Tech Consulting and Software Engineering URL: https://q.agency/blog/data-modelling-types-techniques-best-practices/ What is data modelling? In this blog post you'll learn more about its types, techniques and best practices. What is Data Modelling: Types, Techniques & Best Practices | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > What is Data Modelling: Types, Techniques & Best Practices What is Data Modelling: Types, Techniques & Best Practices September 19, 2025 — 4 min read A great data model does more than organise information — it helps a business make better decisions. At its core, a data model is a blueprint: it defines how data is structured, how relationships are represented, and how analysts can extract meaning from it. A truly effective data model: Can be understood by those who didn’t design it Produces predictable outcomes Scales as the business grows Adapts when business objectives change What Is a Data Model? A data model is a high-level representation of a company’s data and its relationships. Think of it as a map that shows not just what information exists, but how that information connects. For example, in an e-commerce company, a relational data model might connect users, orders, and products to reflect how customers purchase items. Data Modelling Best Practices 1. Start with Business Objectives A great data model begins with business outcomes. Data engineers must collaborate with stakeholders across departments to ensure the model enables the insights that matter most — whether that’s customer behaviour, financial forecasting, or supply chain optimisation. 2. Define the Grain Level Grain level refers to the level of detail stored in a dataset. Setting this early is crucial. For example: Transaction-level grain: every purchase is recorded individually Daily summary grain: only totals are stored Being clear and consistent at the start avoids confusion later. 3. Consistent Naming Conventions Names should be easy to understand, human-readable, and consistent. Following an established style guide (such as the SQL style guide) helps avoid confusion. For example, prefer order_date over odt . A good piece of advice is to follow the SQL style guide . Pro tip: Never mix singular and plural in table names. Pick one and stick to it. 4. Materialisation Decisions Materialisation defines whether data is stored as tables (precomputed, faster queries) or views (dynamic, always up-to-date but slower). The right choice depends on: Performance requirements Technology stack (e.g., Snowflake, BigQuery, PostgreSQL ) Storage and compute costs 5. Data Quality Assurance Without clean, accurate data, even the best-designed model will fail. Practices include: Enforcing constraints (e.g., no null IDs ) Deduplication Validation checks Monitoring pipelines for anomalies This ensures analysts can trust the outputs that drive executive decisions. 6. Permissions and Data Governance Great data models respect privacy and compliance requirements. If storing personally identifiable information (PII), regulations such as GDPR or CCPA must guide how data is handled. Work with legal and security teams to define: Who can access which datasets How sensitive fields (like addresses or SSNs ) are encrypted How audit logs are maintained Types of Data Models The following are some of the most commonly used data model types, each serving different purposes depending on business and technical needs. While these are the most popular, many other variations and hybrids exist to address more specialised scenarios. 1. Flat Model The simplest form — essentially a spreadsheet with rows and columns. Best for very small datasets, but quickly becomes limiting as relationships increase. 2. Hierarchical Model Organised like a tree, with parent-child relationships. Common in early database systems and still used in certain XML or file-based data structures. 3. Network Model An evolution of the hierarchical model that allows many-to-many relationships. Though less common today, it influenced modern relational systems. 4. Relational Model The most widely used model, where data is stored in tables with relationships defined by keys. This powers most transactional systems — from banking to retail. 5. Object-Oriented Model Data is represented as objects, similar to programming in languages like Java or Python. Useful in applications where complex data structures (e.g., multimedia, CAD designs) need to be stored. Common Pitfalls to Avoid Over-engineering the model (too many layers, unnecessary complexity) Inconsistent naming conventions Ignoring scalability until too late Treating governance as an afterthought instead of a design principle Conclusion A great data model is more than a technical artefact — it’s a business tool. It should: Align with business objectives Be easily understood by different stakeholders Ensure data integrity, quality, and security Scale and adapt as the company evolves Choosing the right type of data model depends on your use case , but following best practices ensures your data remains reliable, consistent, and ready to drive decisions. If you want to discuss your data engineering needs, contact us today . Petar Apolonio Petar is our Manager of Data Science Excellence — a mathematician and passionate data enthusiast. A data engineer by profession, he enjoys sports, walks with his dog, good coffee, and spending time with friends. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 19, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 19, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Data Pipeline Architecture: Best Practices for Modern Data Teams - Tech Consulting and Software Engineering URL: https://q.agency/blog/data-pipeline-architecture-best-practices-for-modern-data-teams/ In this blog post, find out which are the best practices for modern data teams when it comes to data pipeline architecture. Data Pipeline Architecture: Best Practices for Modern Data Teams | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Data Pipeline Architecture: Best Practices for Modern Data Teams Data Pipeline Architecture: Best Practices for Modern Data Teams September 25, 2025 — 6 min read Every modern business depends on moving data efficiently — from applications and APIs to analytics dashboards and machine learning models. This is where data pipeline architectures come in. A data pipeline architecture is the design of how data is collected, moved, transformed, and stored from multiple sources into a central system, such as a data warehouse, data lake, or application database. At a high level, data pipelines fall into two main categories: Batch pipelines – process data in chunks at scheduled intervals. Streaming pipelines – process data continuously in real time or near real time. In addition, new approaches like Zero-ETL, Data Sharing, and Data Mesh are reshaping how organisations think about data pipelines. Batch Data Pipeline Architectures Batch pipelines move data in groups at scheduled times (hourly, daily, weekly). They are reliable, widely used, and ideal when real-time insights are not required. ETL (Extract → Transform → Load) How it works : Data is extracted from multiple sources, then cleaned, standardised, and transformed before being loaded into the target system. Transformations often include aggregations, filtering, and joining data to match business logic. This approach ensures only high-quality, structured data is delivered for analytics and reporting. Best for : Traditional reporting, BI dashboards, financial data. ELT (Extract → Load → Transform) How it works : Raw data is extracted and loaded directly into the destination system, usually a cloud data warehouse. Transformations are then applied inside the warehouse, leveraging its computing power for scalability and flexibility. This makes it easier to handle semi-structured or large volumes of data. Best for : Cloud-native environments where flexibility and scalability are key. Zero-ETL How it works : Data is replicated directly from source systems into the target without transformations, minimising latency and complexity. The target system receives the data in its raw format, making it immediately available for querying or downstream applications. This eliminates the overhead of building and maintaining transformation logic. Best for : Fast, simple integrations with minimal setup. Streaming Data Pipeline Architectures Streaming pipelines move data continuously, enabling real-time or near real-time processing. They are essential for applications where speed matters . Real-Time Streaming How it works : Data flows continuously from sources (e.g., IoT sensors, applications, transactions) into a processing engine. The data is analysed, enriched, or filtered on the fly before being sent to destinations like databases, dashboards, or alerting systems. This allows organisations to respond to changes the moment they occur. Best for : Fraud detection, recommendation engines, IoT analytics. Event-Driven / Change Data Capture (CDC) How it works :Pipelines are triggered by specific events such as a file upload, API call, or database row update. CDC specifically tracks changes like inserts, updates, and deletes, ensuring downstream systems always reflect the most current state. This enables near real-time synchronisation and automates workflows based on fresh data. Best for : Keeping systems in sync, triggering workflows when new data arrives. Collaborative and Modern Approaches Data Sharing Pipelines How it works : Instead of copying and moving data, data sharing pipelines make live datasets accessible to multiple teams or external partners. This reduces duplication, improves collaboration, and ensures stakeholders always work with the latest version of the data. Some platforms enable secure, governed sharing across organisations. Best for : Supply chain collaboration, healthcare data sharing, financial consortiums. Data Mesh (Paradigm) How it works : Data Mesh is less about specific tools and more about governance, culture, and decentralisation. It decentralises pipelines by giving domain-specific teams ownership of their own data products. Instead of relying on one central data team, each business unit builds, manages, and serves its data in a standardized, interoperable way. This shifts focus from technology alone to governance, culture, and scaling across large organizations. Best for : Large organisations with distributed teams and complex data domains. Comparison Table Best Practices When designing data pipeline architectures, scalability should be one of the first considerations . The ability to handle growing data volumes without major redesigns is essential for long-term success. Monitoring and observability also play a crucial role: by tracking pipeline health, latency, and errors, teams can detect issues before they impact downstream applications. Data quality and security must be enforced at every stage , from validating records at ingestion to encrypting data in transit and at rest. Finally, cost optimisation should not be an afterthought. Leveraging serverless technology, autoscaling features, or pay-per-use pricing models helps organisations control expenses as workloads fluctuate. Choosing the Right Architecture The “right” pipeline depends on your needs: Batch pipelines are best when data doesn’t need to be real-time and stability matters. Streaming pipelines are best when every second counts. Zero-ETL is gaining traction in cloud-native setups. Data Sharing and Data Mesh address organisational challenges—governance, collaboration, and decentralisation. For many companies, a hybrid approach works best: batch for heavy workloads, streaming for real-time use cases, and data-sharing models for collaboration. Real-world data pipeline architecture examples Subsea 7 – Logistical Operations Custom Data Pipeline Example (Energy Industry) For Subsea7, we have built a solution that encompasses: An onshore application for entering the ship log data that runs on vessels. A central onshore application for collecting the said data, collating it, and displaying it in various dashboards. A project management application , for defining and managing checklists that serve as templates for tasks that every project needs to be completed. An application for the equipment transportation system to streamline every aspect of the logistical process. A system for streamlining and speeding up the process of project budget estimation and resource task assignments. This required creating a distributed system that functions both onshore and offshore. Each ship receives only the data that is relevant to it. Both the automated and manual transfer of data is enabled. The custom data pipeline architecture that we have created follows the business-oriented logic: When is the data going to be transmitted? Is an internet connection available? Is the bandwidth limited? The solution is a combination of different data pipeline models . Sandoz – Real-time Data Pipeline Connecting With Multiple External Services (Pharma Industry) The Sandoz Stockout Monitor web application’s purpose is to help pharmacists have the right information at the right time, giving the right support to their patients. While this may sound simple, it was a challenge in terms of: Connecting with numerous external services Managing the substantial data load that required constant synchronisation Ensuring real-time data accuracy and reliability This project demanded meticulous data pipeline architecture planning in order to maintain a seamless performance. Final Thoughts Data pipeline architectures have evolved from traditional ETL into a spectrum of batch, streaming, and collaborative models. By understanding the strengths, limitations, and use cases of each, you can design pipelines that are scalable, cost-effective, and future-proof . Ready to unlock the full potential of your data? Get in touch with us and let’s start building the right pipeline architecture tailored to you and your business. Petar Apolonio Petar is our Manager of Data Science Excellence — a mathematician and passionate data enthusiast. A data engineer by profession, he enjoys sports, walks with his dog, good coffee, and spending time with friends. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 25, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 25, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Deliver the Product Backlog Using User Stories - Tech Consulting and Software Engineering URL: https://q.agency/blog/deliver-the-product-backlog-using-user-stories/ Learn how to efficiently deliver the product backlog using user stories, ensuring effective communication and collaboration within your team. Deliver the Product Backlog Using User Stories | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Deliver the Product Backlog Using User Stories Deliver the Product Backlog Using User Stories June 28, 2025 — 15 min read Explore how to utilize and make sense of user stories when working as an IT Business Analyst If you work as an IT business analyst or want to get into this field, chances are you will encounter something called user stories. In this blog post, we’ll cover everything you need to know from the basics to the most common pitfalls and examples in practice when working in a project-oriented environment. In the following sections, you’ll learn about: user stories and what they are defining the user roles capturing requirements creating and grouping user stories writing the acceptance criteria validating, prioritizing, and mapping user stories What are User Stories? User stories are a way to describe software features from a user’s perspective using natural language rather than technical. It usually follows a structure that goes like this: As a [user role], I want to [do something] so that I can [achieve something] . An example of a user story for a pet grooming app can look like the next sentence. “As a pet owner, I want to see all the available pet grooming appointments so that I can decide on the date and time that suit me.” You can divide the main activities for preparing the user stories into seven steps . To begin with, you need to get to know your client, business domain, and goals. This way, you can start defining the user roles and capturing the requirements which translate into user stories. Afterward, you need to validate, prioritize, and finally map the user stories to prepare for development. We will go through each one of these activities in more detail in the following chapters. Throughout the software development process, teams utilize user stories, starting from requirement elicitation to testing and deployment. When creating user stories, all project members should collaborate to ensure optimal definition from the technology, user experience, and business perspectives. While Business Analysts hold responsibility for user stories, it is crucial to consult individuals in all project roles . Developers can provide valuable input on what is feasible technology-wise , QAs can give you input regarding the non-functional requirements and edge cases , designers can simplify the user flow , and your client, of course, can give you all the information regarding the business domain . It is a good idea to ask for feedback regularly to make sure you’re going in the right direction when creating user stories. Defining the User Roles To start creating user stories, you’ll need to figure out the user roles first and to do that you need to get familiar with the business domain and goals . This means it is time to research, analyze, and do requirement workshops. Once you have a good understanding of the business and business goals, defining the user roles is easy. Sometimes, this process will be straightforward, and the client will be able to describe each role and job responsibility . Then, you as a business analyst, should step in, put on your critical thinking hat and check if those roles make sense, and challenge the client with follow-up questions if you find out the business process is not optimal in any way, or if something else is not clear. However, sometimes the client won’t be able to tell you and you’ll have to elicit the roles based on the inputs you gathered . Once you define the roles on your own, it is a good idea to discuss them internally with the technical team first and then present the roles to the client to make sure they make sense business-wise and the client understands them. Capturing Requirements When talking with the client and trying to elicit the business goals and needs, you will probably be capturing functional requirements by default. Functional requirements describe what the app must do , and what functionality it should have, for example, the ability to schedule an appointment. All of these will, at some later stages, become user stories given you are using this approach. However, you should also capture non-functional requirements (NFRs) which describe the characteristics, but also constraints of the app such as reliability, security, performance, etc. The reason and the need for capturing the NFRs are well described in this article by the Scaled Agile Framework , also known as SAFe: “Although they may seem subtle, NFRs are just as vital to system success. Failing to meet NFRs can result in systems that do not meet the needs of the business, Customers, market, or applicable regulations or standards . In some cases, non-compliance can cause significant issues, such as cost, recalls, privacy, security, safety risk, legal exposure, and more.” – © Scaled Agile, Inc. All of the captured requirements need to be estimated so the project can be properly planned and agreed upon with the client. During this process, the project’s scope and the client’s expectations are set. This is also why it is crucial not to overlook the NFRs and to capture them as well . Not capturing them can easily make the project go sideways. During the NFR analysis, I always rely upon and ask the technical team for their input since this is mostly their domain so yes, as a BA you do carry this responsibility, but you should always have support. Since NFRs can get quite technical and aren’t really something that a user would regularly say I don’t prefer writing them in the form of user stories, but it is not wrong if you do. I suggest writing simple descriptions and acceptance criteria for the NFRs and grouping them into categories. For example: “Localization: The supported app currency is Euro.” Also, I would suggest separating the functional and non-functional requirements but referencing the NFRs in functional user stories when they are closely related. Creating and Grouping User Stories Now that you have established the user roles and got familiar with the business domain, you can start writing the titles of the user stories that you identified and group them by user roles to have a clear understanding of which role does what. If this is something that is not applicable in your case (e.g. maybe you have just one role), you can skip this step and group the user stories into epics right away. Think of an epic as a large user story that is composed of many smaller user stories which are closely related to each other and bring you toward the business goal. In the example below, on the left side you can see how the user stories (yellow) are first grouped by different roles , and also duplicated in the case when two different roles need to be able to execute the same user story. On the right side, you can see how, based on the related user stories, the epics are created and user stories are assigned accordingly. Keep in mind that there simply isn’t a one-size-fits-all solution. Every time I’m working on some project I improvise and adjust the approach I use so that it makes sense in a given context. Writing the Acceptance Criteria By now, you have probably captured a lot of details during the requirement workshops and it is time to give them structure and include them in the user stories, in other words, to write acceptance criteria . Essentially, acceptance criteria can be defined as a list of conditions that need to be met for the user story to be accepted by the stakeholders . For example: the user must be able to see a list of available services the user must be able to select the desired service when the user selects the desired service, the service description and price must be shown During the development phase, developers and QAs primarily use the acceptance criteria to ensure that the developed software aligns with the agreed requirements. However, it is important to get the client’s confirmation first to ensure mutual understanding and expectations that certain parts of the software must meet . Besides the checklist format displayed above, there is also another popular format you can use that goes like this: Given [the context], When [some action happens], Then [some results occur] . For example, Given I am a pet owner, When I select the desired service, Then the service description and price are displayed. Which acceptance criteria format you are going to use is simply a matter of personal preference . I’ve only used the checklist format because I find it easier to read, but this is entirely up to you. One general rule worth mentioning when writing the acceptance criteria is to never dictate implementation unless you have a very good reason for it. For example, it was specifically requested by the client to be done in a certain way and the team agreed that it makes sense. I must admit that this is the most common mistake that I see my peers doing when writing the acceptance criteria. So what exactly does this mean? To avoid this mistake, you need to use proper wording , so instead of saying “The user must be able to click on a button to save changes,” rather say “The user has the option to save changes .” In this way, you are not suggesting a solution being a button and you are allowing other team members such as designers to do their jobs creatively . Validating the User Stories When writing user stories, it is a good practice to validate them often, which means asking yourself some questions to make sure you are on the right track. For this purpose, you can use the INVEST mnemonic to help you remember the basic principles that need to be met to produce a good product backlog. INVEST describes the characteristics of the product backlog items (user stories in our case) and stands for I ndependent, N egotiable, V aluable, E stimable, S mall, and T estable. If you are following the INVEST principle when validating user stories, ask yourself these questions: Is the user story independent? It is not always possible to have independent user stories especially because we want to keep them small, but do think of ways to achieve independence to remove any potential blockers once you reach the development phase. Is the user story negotiable? This refers to leaving room for discussion and not including implementation details such as UI design in the user story. We already covered this topic in the chapter “Writing the acceptance criteria” so you are good to go. Does it bring value to the stakeholders? You need to know the business domain and goals first to be able to create user stories that will bring you closer to those goals and once an increment is delivered, with good communication and expectation setting, the stakeholders will recognize the value. Is the user story easy to estimate? A user story should be clear and concise, and therefore easily estimated. If not, then consider splitting the user story into smaller user stories or investigate further and find the root cause of the problem. Ask the technical team for support if needed. Is the user story small enough? A user story must fit into a single sprint, and ideally, it can be done in a few days. If not, it means that the user story is too big and needs to be split. Can you test the user story? User stories must provide enough details so the developers know what needs to be done and for the QAs to know why, how, and what to test. Additional questions you can use to validate the user story: Can the user story be easily added or removed from the scope? In projects, you often have to add or remove user stories from the scope to fit the budget or timeline, and this is another reason why user stories need to be independent and small enough. Is the user story simple enough for all the stakeholders to understand? Non-technical people must be able to understand the user story. User stories can contain technical details if the team agreed upon them so they won’t be forgotten later on, but in the form of side notes, rather than the main part of the story. Is the user story over-engineered? Think about if there are any ways to simplify the user story while still bringing value to the stakeholders. The KISS principle (Keep It Simple, Stupid!) is always a good way to go. Prioritizing the User Stories Once you finish writing the user stories, it’s time to prioritize them together with the stakeholders . In Q, we are using the MoSCoW method for prioritization. Still, whatever method you decide to use, the bottom line is that you need to be able to distinguish between the crucial and less crucial user stories . When you prioritize, keep in mind the dependencies between user stories . For example, if the prerequisite for appointment booking is having a user account, then user account creation must have the same or higher level of prioritization than appointment booking. One concept to also keep in mind is the minimum viable product (MVP) . The goal is to do a minimum set of must-have, crucial features that solve some problem and deploy it to the market as soon as possible so that we can validate the idea and collect feedback, and then improve the product based on that feedback. To sum it all up, when doing the prioritization, do it together with the client, watch out for user story dependencies, and consider the MVP approach to the project as it should bring your client the most value with the minimum set of functionalities. Also, remember that the prioritization meeting should be a discussion . As usual, we BAs don’t just blindly accept what we are told, but we question decisions to make sure they make sense . Final Deliverables & User Story Mapping Under these few paragraphs, you will find examples of what your final deliverables might look like . You will see that I used numbering for the epics and user stories as well as NFRs since it makes navigating a huge backlog a lot easier . If something gets descoped, it is easier to find and manage an item that is called “E08-02” because it tells you it is the 2nd item in the 8th epic, instead of going by the full name of a user story that was maybe changed in the meantime or can be mistaken with a user story with a similar name. All the examples covered in this blog are just one out of a hundred ways of preparing user stories . BA is a creative role, be free to explore, modify, and find solutions that work for you . I would also advise that you use tools such as Google Sheets for writing the requirements because requirements written in this way are more visible and easier to manage as they are all in one place so you can recognize patterns and dependencies if they exist, and see potential mistakes. The main takeaway is, if you can, and if it makes sense in your case, use a tool that allows you to have an overview of all the user stories with their descriptions in one place . When you reach user story mapping, it’s time to pat yourself on the back, but also to take into consideration all that you learned so far and arrange the user stories in a way that will make sense from the business and technical perspectives . Basically, you will be creating a high-level roadmap. What I like to do here is take some time, put all of the user stories on the Miro board so I can have a nice overview of them, and then start moving them around and arranging them in a way that the most important user stories that are prerequisites for other user stories come first . After finishing the sorting, I would call an internal meeting to present the user story map to the technical team and to discuss if it makes sense, or if any rearrangements are necessary due to technical reasons. After you have that set and ready, it is very easy to do planning sessions once the project hits the development phase. Below, you will find an example of what the user story map can look like . This is a template that I came up with because it made sense for me and my project. Of course, you can find many similar templates online and adjust them to your liking and needs. Conclusion In the life of a BA, just like in life in general, you simply can’t make everybody happy . I’ve had comments from developers on one project that my user stories were too big, and then I took that feedback and changed the approach on another project, and then I got comments from the solution architect that they were too small. Writing user stories takes time and practice, and you will make mistakes. But if you keep an open mind, ask for feedback, and learn from it, you will master user story writing in no time. Most importantly, with time you will learn to trust your judgment and find creative ways to approach projects and challenges and you’ll do so with confidence. Mateja Kardasic Mateja is a Business Analyst at Q agency. Before becoming a BA, she was both a developer and tester, which allows her to understand every problem from multiple perspectives. She is driven by her need for continual improvement and a desire to work on building digital products that make a difference. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 28, 2025 — 15 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 28, 2025 — 15 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # #1 fastest growing software agency in Europe - Tech Consulting and Software Engineering URL: https://q.agency/blog/deloitte-awards/ Q agency was named the fastest-growing software company in Europe after achieving 3894% growth and ranking among Deloitte’s EMEA Technology Fast 500. #1 fastest growing software agency in Europe | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > #1 fastest growing software agency in Europe #1 fastest growing software agency in Europe December 8, 2019 — 3 min read Winning an award presents many excellent opportunities for our business. It’s satisfying and so much fun. Not only is it fun to compete against the rest of the industry and beat your competitors, but mostly to get your work validated. DELOITTE FAST 500 This year, Deloitte published its EMEA Technology Fast 500 and we made it into Top 20 with an annual growth rate of 3894%! Europe, Middle East, and Africa is a huge market with 2.2 billion people. We are the only European software and design company to be at the top of this list, making it the fastest-growing software company in Europe! The ‘Deloitte Fast 500’ is the world’s most prestigious list that tracks the growth of organizations worldwide, based on revenue growth over four fiscal years. Croatia is in this year’s list of leading countries in the region in terms of the total number of companies placed on this Deloitte list, which speaks a lot about the potential that Croatia has in the form of young entrepreneurs and professionals, especially in the IT sector. ‘It’s great to be recognized by Deloitte! Our inquisitive team did a great job finding the answers to the most challenging tech questions of today. ‘Whatever the Q, we got the A’ is not just our slogan, but also our business philosophy that has proved to work globally.’ -said our CEO, Filip Ljubic. The practice has shown that joining the Deloitte ‘club’ can be a powerful statement for the dynamic young companies that meet the program’s criteria and enables them to join the fast-growing family across the world of business. DELOITTE FAST 50 It seems like we can’t get enough of Deloitte awards. Another beautiful surprise was that for the third time in a row we have won the award for the Deloitte Technology Fast 50 Central Europe , which is a program that recognizes and profiles the fastest growing technology companies while celebrating innovation and entrepreneurship. Deloitte Private Club organized a great party, while Rimac Automobili — winner of the ‘Most Disruptive Innovation’ award, hosted the ceremony for the most successful Croatian companies, placed on Deloitte’s list. Founder and CEO Mate Rimac, the creator of the fastest electric car in the world, said the words of encouragement to all of the attendees and to keep up the good work. We are proud and happy we can wrap up this busy but successful year with more recognition, and to enter 2020 even more motivated! Thanks to all of our partners and clients for the trust and support they gave us and of course to all of our team for all of the hard work they put in. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 8, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 8, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Onshore vs Nearshore vs Offshore Software Development - Q Agency URL: https://q.agency/blog/differences-between-onshore-vs-nearshore-vs-offshore-software-development-and-how-to-choose-correctly/ Learn what onshore, nearshore, and offshore software development outsourcing really means. See the pros and cons, and how to prepare for it. Onshore vs Nearshore vs Offshore Software Development - Q Agency AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Differences Between Onshore vs Nearshore vs Offshore Software Development and How to Choose Correctly Differences Between Onshore vs Nearshore vs Offshore Software Development and How to Choose Correctly January 19, 2025 — 13 min read Software development outsourcing is a big topic. In fact, it’s huge. Last year, more than 28 million people across the world were software developers. This figure is expected to swell to 45 million by the end of the decade. But the most advanced global regions are also the ones short on developer talent. That spells trouble for US and EU companies. Developers in the West are getting more expensive and less numerous, as boomer workhorses go into retirement and millennials hold onto their title as the least employed and least engaged generation. In general, if you’re hiring in the West, you have no choice but to look at foreign shores. (Of course, the situation is even worse in the unsexy public sector.) This short article is packed with useful info. You’ll learn what onshore, nearshore, and offshore outsourcing really means. You’ll get acquainted with their pros and cons. And you’ll learn how to prepare and avoid outsourcing pitfalls. All of that for a single goal: to hire a software development firm that is the best solution for you. Onshore vs Nearshore vs Offshore Outsourcing – Comparison View The Onshore column is the greenest because it is the comfort zone. But don’t let it fool you. For most companies, the Cost row is the sweetest incentive to outsource. And there, proverbially, the grass is greener on the other side. What is Software Outsourcing? Software outsourcing is when you hire outside people to do your software development for you. They aren’t your employees, they are an independent firm. Outsourcing is traditionally divided according to its closeness to home: Onshore is when you outsource to someone within your country. Nearshore is when you outsource to countries in the same time zone as you, or up to 3 hours away. The most popular nearshore locations for the United States are in Latin America: Mexico, Brazil, and Argentina. The most popular nearshore locations for Western Europe are in Eastern Europe: Croatia , Poland and Romania. Offshore is when you outsource to countries that are more than 3 hours away. An offshore location for the United States or Europe would be India or China. Software outsourcing is the global norm. But until recently, it used to be an exception. It’s easy to forget that international business cooperation was a complicated and expensive procedure only a couple of decades ago. Medium and small businesses could only realistically choose among developers from their own country (i.e. onshore). And since the savings weren’t so great, many were ready to spend a little more to have their own IT teams instead of trusting strangers. Since communications and technologies have become truly globalized, nearshore and offshore outsourcing is much less of a hassle now. You don’t have to be a multinational behemoth to strike deals with teams in India or China. Any startup can do it. So, obviously, the global IT outsourcing market is skyrocketing. Its 2024 revenue is estimated at $512 billion . Just three years ago it was believed this figure would be reached only in 2025. Why Do Companies Outsource Their Software Development Projects? Outsourcing is less and less about lowering costs. There’s simply nobody left to hire in the richer countries any more. The recent pandemic-fueled remote work and the Great Resignation have aggravated the war for talent. The world hungers for IT hands, from code cadets to crypto zen masters. The developing world is catching on and pouring more and more resources into IT education. No matter what software you need, you can bet there’s someone in Croatia or Brazil who has just the right thing for you, because they have already done a similar job for another client from your country. Advantages of Software Outsourcing But why do companies outsource software development? What are the reasons they give? Almost 60% of companies are outsourcing their work to increase productivity, while 64% of outsourced work is related to software development. These are some of their reasons for outsourcing, listed in order of importance: Lower costs. This advantage is the most obvious and the easiest to measure. It’s cheaper than having a full-time employee. And if you’re in a high-standard country, the farther away you go, the cheaper the labor. Focus on core business. Microsoft’s CEO may be right that “every company is a software company,” but that doesn’t mean you actually have to make the software in-house. If you outsource it, you can make more money doing what you’re best at. It solves capacity issues and business needs. Outsourcing is fast and flexible. In fact, it’s the only way to meet sudden scaling requirements or tech changes. And you can reduce the team whenever you like. Huge intellectual capital. Once you decide to outsource, the whole world can work for you. You don’t want to get stuck with 28 in-house developers when you can keep picking among 28 million. So the real issue is what outsourcing model to choose: onshore vs nearshore vs offshore software development . Each model has its own strengths and weaknesses. Onshore Outsourcing – Pros and Cons Developing your project on your home turf has some distinct advantages. Pros of onshore outsourcing: Real-time collaboration: Since you’re in the same time zone, your business hours are the same. If you need a face-to-face meeting, it’s no problem. And you don’t have to wait 24 hours to have your e-mail answered. Native language communication. The risk of misunderstandings drops and work efficiency rises. Sharing the language also means sharing the same culture and all its shortcuts that make work relations so much easier. Faster job completion. While this is not a given, you can expect to achieve results in fewer steps because of the above points. Personal training. You can invite the outsourced team members to your company to get some hands-on experience with your workflow. The same legal framework. Foreign companies operate within different regulatory systems. If your software requirements could entail major legal or copyright issues, you might want to avoid headaches and go onshore. Less risk in uncharted territory. In case of more sensitive jobs, like creating brand new software or exploring new business opportunities, a local team means a lower chance of failure. Patriotism. When you outsource inside the country, you support the local economy and get some good PR. Cons of onshore outsourcing: It’s expensive. If you’re in a rich country, the high standard of living automatically raises prices. Smaller talent pool. And fewer people means higher rates. Backdoor offshoring. Take care not to get conned into working with an “onshore” company where the “locals” are salespeople who forward everything offshore. It’s not unusual. Offshore Outsourcing – Pros and Cons The most obvious difference between onshore and offshore is the difference in cost. That’s the great plus of offshore outsourcing. However, when you look at offshore outsourcing pros and cons, you’ll see many possible disadvantages; you have to be extra careful with offshore jobs. In a Deloitte survey, 20% of the respondents were planning to “backshore” in the near future. Offshore outsourcing is a great solution for simpler projects, like an established process that needs to be scaled, or product testing. Pros of offshore outsourcing: It’s the cheapest: A lower cost of living means a dirt cheap project. The labor costs in India and China are four times lower than in the US. Bigger and more diverse talent pool: More developers means more talent and greater choice. Faster work and easier maintenance: Since offshore developers are cheaper, the teams there can afford to deploy more workers on your project than onshore. Also, they can find new people faster. Software maintenance is supported by the sheer force of numbers. No bureaucracy: You don’t need to think about local employment regulations or taxes. It’s all dealt with by the offshore company management. This means great flexibility in how the team grows or shrinks depending on your needs. Cons of offshore outsourcing: Different language: The worst consequence of the language barrier isn’t that people don’t understand you. It’s that they imagine they do. And it can take you days, or even months, to realize you’ve been misunderstood. Striving for clarity is hard and time-consuming. Different time zone: Your morning is their evening. Anything from e-mails to meetings will take longer, adding costs and delays to your project. Different culture: Many attitudes and business habits you take for granted will be seen as unreasonable over there, and vice versa. Clear and resolute communication is key. Don’t worry about offending people. You won’t economize as much as you expect: Hourly rates can be deceptive. All the differences above will be converted into wasted time. Confidentiality: Cheaper labor usually means slacker attitudes towards legal issues, particularly copyright and intellectual property laws. You’ll need careful technical documentation. Some of the copyright, security, privacy, and legal risks to take into account are described here . Blown-up staff costs: To compensate for low hourly rates, offshore companies tend to bloat their project staff with unneeded workers. Consistency: Offshore developers can be desperate for work and take on whatever comes along without sticking to your project, so there can be a big turnover. Nearshore Outsourcing – Pros and Cons Nearshore outsourcing tries to combine the best of onshoring and offshoring. The advantage of nearshore vs offshore software development is the same time zone and usually a similar working culture. The advantage of nearshore vs onshore is lower cost, though not as low as offshore, and a large talent pool. For the US and Canada, nearshore is Latin America. For Western Europe, it’s Central and Eastern Europe. You could use a combined approach: find a team where the lead developer is from your country and the rest is nearshore or offshore. Or you could have a local project manager. Either way, you will partly avoid the communication problem. When to Outsource Your Software Development Project? This is about your needs . The question of when to outsource software development is the question of when you’ve run out of money or resources to realize your plans. You should outsource if: Your country is running out of available developers. You lack the money to finance your own IT department. You need particular skills that are hard to find. You need fast scaling or more flexibility. You need greater productivity. You need people working around the clock. Your code is outdated. You need custom-made software. You need a team for a limited amount of time. You have tight deadlines. And this doesn’t just apply to cash-strapped startups or mid-sized businesses. With software development outsourcing expected to rise year by year, we shouldn’t ask which companies use outsourcing, but which ones don’t. Skype chose Estonia, Google relies on Southeast Asia, and Apple went to China. Sometimes it goes the other way round. In its early days, Alibaba outsourced to the US: as a Chinese company, it already had cheap labor, but it lacked top skills. How to Outsource Software Development? The focus on outsourcing means a focus on your integration with the remote team. Before you go looking for software developers, you need to answer these questions about your software: Who will use it? Different users (like admins or editors or posters) have different needs. Where will they use it? You should know what platforms the users will need to access your software, like browsers on computers or phones, or apps on different devices. What other software will it interact with? It could be connected to social media, shopping platforms, data analytics, banks etc. What will they do with it? E.g. buy stuff, send messages, input data, post notices etc. How should you protect it? What parts need security measures, like passwords, user data, access rights etc. Will you need to migrate data? If your software is an upgrade or replacement, maybe you will need to migrate data from the old system. Are there any regulatory conditions? Your software might need to comply with some legislation. Any favorite technologies? This question is for clients with IT people of their own, who might prefer a particular language like PHP, JavaScript, Python etc. Where will you put it? Your software must have a home, and it could be your server, cloud etc. How will you sell it? If the software is for a product, keep in mind things like marketing, sales, and pricing. What really matters is what kind of service you get. Let’s see how to hire a software development company that promises to be reliable. How to Find and Hire a Reliable Software Development Company? I already wrote about some general considerations when hiring someone. These six points are particularly important: Find recommendations Check the team’s past work Check reviews about them Test them Have a clear contract (SLA) Speed, cost, quality: choose two As for where to look, it depends on what kind of software you need. And finding candidates has never been easier. You can put a free ad on hiring platforms like Upwork, Freelancer, PeoplePerHour, Guru or Dice. You can browse professional communities like Stack Overflow or LinkedIn. Even a simple search on Google will give you ideas. I’d suggest trying all that just to get a feeling of what’s out there. Or you can start by choosing a region or country of preference. I find this one interesting: Central and Eastern Europe. The standard of Central and Eastern European countries may be catching up with their wealthy Western neighbors, but they still offer great value for money, with high professionalism, no cultural barriers, and English proficiency . Croatia is the only country in Central and Southeast Europe that is in the top 5 countries where people speak English with very high proficiency. Conclusion To recap, here are the main points: choose onshore for smooth cooperation; choose nearshore for a good mix of quality and price; choose offshore for the lowest cost. If you’ve made it this far, you know that the basic question of onshore vs nearshore vs offshore development isn’t about particular countries at all. It’s about your own priorities. But if you aren’t crystal clear about what you want, or if you need to discuss it with someone who knows the market, contact us at Q Agency for help and guidance. With more than a decade of successful software projects behind us, we listen carefully and explain clearly. And we never forget your goals: our digital strategy goes hand in hand with your business strategy. We respect your product and your money. And we deliver. A Successful Example of Software Development Outsourcing The Times Travel web platform on which our experts have worked is a prime example of how software development outsourcing results in great user satisfaction and business success. Click here to see the Times Travel case study . Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 19, 2025 — 13 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 19, 2025 — 13 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Digital Quest or How To Get Obsessed With Data - Tech Consulting and Software Engineering URL: https://q.agency/blog/digital-quest-or-how-to-get-obsessed-with-data/ Despite all the success stories of data-driven decision-making, many fall short. So to help our clients capture the ultimate value out of data, we designed Digital Quest. Digital Quest or How To Get Obsessed With Data | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Digital Quest or How To Get Obsessed With Data Digital Quest or How To Get Obsessed With Data November 5, 2021 — 4 min read Despite all the success stories of data-driven decision-making, many fall short. So to help our clients capture the ultimate value out of data, we designed Digital Quest . Data Science is growing up fast. The Big data market is expected to be valued at $274 billion by 2022. From C-suite to individual teams, the motto is data-driven decision making – harnessing insights from big data for smarter decisions. Despite all the success stories, a survey conducted by Accenture showed that only 32% of the companies reported realizing tangible and measurable value from data. This raises the question: why do these considerable efforts produce so little value? The answer lies in the fact that most companies take a backward approach to Data Science by producing insights from available data. The other way around would be first to determine a decision that needs to be made and then find the data to provide insights towards the desired goal. Therefore, aligning business strategy with data and analytics aspiration, creating analytics vision, advocating user-centric design of analytics products, and then assessing the data we have and data we need, would be a more efficient approach. Could strategy consulting be the perfect solution then? Well, to a certain extent, yes. Strategy consultants can help in many ways, excelling at strategy design and providing actionable, tailor-made tactics. And since digital and technology initiatives are inseparable elements of any business acceleration nowadays, traditional consulting companies naturally shift towards the technology consulting space, leveraging their vast business acumen and investing heavily in closing their digital capabilities gap. However, crossing the chasm between traditional consulting space and digital/technology consulting space is not so easy. It often requires hands-on experience in designing and building user-centric, digital products . This is the gap many traditional consultants still need to bridge. The key to creating the optimal data science strategy is to develop it by people who excel both in digital strategy design and state-of-the-art technology. Where does Q fit in all this? We combine our wealthy technology expertise with our product strategy experience to institute an approach that derives value from both business and technology management. Our product strategy know-how means that we understand how to align company strategy with the digital agenda and design data science strategy. At the same time, we leverage our extensive hands-on digital production experience to align business needs with tech stack, IT infrastructure and organizational needs. This allows us to outline actionable initiatives that guide our clients from strategy to execution. Having technology consulting at its core, Q is progressing more naturally and swiftly towards state of the art, a data science consulting . Data Science Consulting process Digital Quest – capturing the unique value of your data and analytics Digital Quest is the methodology designed by Q to guide our clients in capturing specific, digital business opportunities along their value chain. The core of Q’s Digital Quest lies in our Analytic maturity model . It assesses a company’s digital proficiency and evaluates analytical maturity in 5 key areas: descriptive, diagnostic, predictive, prescriptive, and cognitive analytics A data science roadmap, aligned with strategic goals, is then individually developed based on where your analytics aspiration lies. To reach the full potential of your data and analytics, we guide you through six pillars of digital and analytic change: Strategy, Organization, Process, Talent, Technology, and Data. Q Framework Business understanding and a clear analytic vision are as important as the data itself to capture the full potential out of your data. Feel free to reach out at hello@q.agency if you are excited to start your own data science journey with us. In the meantime, You can play with a demo version of our Digital Quest’s Analytic Maturity Model to see if you have potential gaps in your digital agenda. Experience Analytic maturity model showcase today and drive value towards your aspirations! Jurica Lovrek Jurica is Head of Data Science Consulting with long-term experience in the consulting industry. Excelling at strategy development, he has joined Q to apply his expertise in the field of digital. Jurica has leveraged his experience to drive corporate innovation while designing analytics-driven products, services, and business models. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 5, 2021 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 5, 2021 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Digital Strategy: Its Meaning & Impact on Business Growth - Tech Consulting and Software Engineering URL: https://q.agency/blog/digital-strategy-meaning/ Understanding the digital strategy meaning is crucial for your business to grow. Learn why it's important for your software's success. Digital Strategy: Its Meaning & Impact on Business Growth | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Digital Strategy: Its Meaning & Impact on Business Growth Digital Strategy: Its Meaning & Impact on Business Growth March 18, 2025 — 6 min read For any company to succeed in today’s world, digital strategy is the key. Here, we’ll go through why it’s essential for any business, with companies building software in focus, and what are its key aspects. Understanding the digital strategy meaning is crucial for your business to grow, and it’s proven that you’re more likely to have bigger success with your software product compared to your competitors who don’t have it all figured out yet. Unfortunately for them. Because the goal of digital strategy is to optimise processes so that the end user has a reliable and useful product — if your digital strategy isn’t worked out yet, this article is for you. Why Digital Strategy Matters Users across the globe expect a seamless experience when using any product — be it a mobile app, web app, website, and so on. Of course, the competitors are not standing still, so they are constantly raising the bar that everyone who wants successful software delivery must follow. If the digital plan is not developed, it’s easy to fall behind competitors. It is interesting to note that 87% of senior decision-makers consider digital strategy a top priority . Also, almost 90% of businesses already have a fully set up digital strategy or it is in an advanced stage of development. Hips don’t lie, and neither do numbers. It’s time for every company to have its own digital strategy. Benefits of a structured digital strategy Keeping up with the competition. New technologies are on the rise all the time (we’re not even going to mention AI), and they are the key to maintaining an edge in your industry and responding promptly to market changes. Improving user experience. This is a big one. Here, the key is to provide your users with a user experience using all digital channels — web, mobile, social media — so that you can meet their needs. Improving efficiency. Today, many processes can be automated and there are various software, i.e. solutions that can cut costs in the short and long term and ultimately lead to a clearer and easier upgrade of your product. A myriad of opportunities. New sources of income? Potential changes in your business models? Analysing your competitors and learning from their mistakes? This is what the meaning of a digital strategy that’s well-structured truly is. Basically, the meaning of digital strategy is you being ensured that all aspects of your business work together towards the end goal — your software’s success, business growth, and so forth. Key Aspects of Digital Strategy Each software-building company has a different approach to its digital strategy, but here are the 4 most common aspects needed for a successful end product. Agile development. Agile development methodology is a broad term with the goal that software solutions always have in mind the users’ requirements as well as the adaptability of your product in ever-shifting business circumstances. This approach involves the use of flexible and iterative methods in software development. The result? Your software can be built based on feedback and can deliver new functionalities faster. Cloud computing. In other words, using cloud platforms to store your software in the making — cloud computing is the pillar of scalability and adaptability of your software product. Benefits of cloud computing involve scaling your product more easily, offering remote support as well greatly increased cost efficiency as there’s no need for expensive hardware and infrastructure. Data-driven decisions. As a crucial part of a good digital strategy lies collecting and analysing data that will help guide you to ‘tweak’ your business direction, decisions, and will simply make it easier to bring decisions based on not guessing but real data. Digital transformation. It involves increased productivity as it automates repetitive tasks and improves workflows. It also leads to a better and personalised relationship with the end user with the help of analytics. And finally, it provides a greater competitive advantage because it uses new technologies (e.g. the ubiquitous AI) for easier innovation. Digital Transformation vs Digital Strategy These two terms are often used interchangeably, but there’s a difference between these two. So if digital transformation involves an all-around process of changing your company’s way of doing business, and finds ways to adjust it to the ever-evolving changes in digital trends, the meaning of digital strategy is different as it brings a different approach. Its focus is defining the specific goals your business needs or requires and aims to implement them and turn them into reality. Since our focus is on companies that develop software products or services, we can see a clear difference between digital transformation and digital strategy. Digital transformation involves the use of new tools and processes, while digital strategy focuses on how to make such a transition as easy and painless as possible for your company by setting steps and prioritising them. From MVP to Scaling Your Product When building a specific software product or service, one of the most common terms you hear is the term minimum viable product (MVP). This is a product that can be built in the shortest possible time for the client, and contains the key features that form the essence or the backbone of the product itself. An MVP is an example of a smart and well-thought-out digital strategy. Because, with this approach, it’s easier and faster to create a product that doesn’t include a large number of often unnecessary features. On the contrary, it’s focused on what the user really needs from your product. Of course, the benefit of this approach is a great cost reduction. After the MVP phase, the product can be upgraded and this is where software scalability comes into play. After the MVP proves to be successful and gives a signal that it has the potential to be further invested in, the company can (and must) have a ready scalability plan with the help of a built digital strategy. In other words, for the software to have good prospects for successful scaling in the future, a comprehensive and data-driven digital strategy is a must . Conclusion If you are looking for your software to have the ability of keeping up with your competition, more options to improve its user experience and efficiency as well as the possibility to be more prone to dynamic changes in today’s age, digital strategy is key. It provides adaptability, scalability and data-driven decision-making, which ultimately leads to a greater chance of your product to excel and your business to grow. We’re here for you as a reliable and experienced partner who can help develop a digital strategy for your software. Contact us if you have a business idea that we can turn into reality. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 18, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 18, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Digital Transformation Managed Services - Tech Consulting and Software Engineering URL: https://q.agency/blog/digital-transformation-managed-services/ Digital transformation managed services enable businesses to focus on their core products. See how this works, explained in simple terms. Digital Transformation Managed Services | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Digital Transformation Managed Services Digital Transformation Managed Services March 24, 2025 — 10 min read In today’s rapidly evolving business landscape, companies face the imperative to innovate, enhance customer experiences, and optimise operations. Two pivotal strategies have emerged to address these challenges: Managed Services Digital Transformation While each serves distinct functions, their intersection offers benefits that can significantly impact the success of a business. Understanding Managed Services Managed Services involve outsourcing specific business processes and IT functions to third-party providers, known as Managed Service Providers (MSPs). These providers assume responsibility for the continuous monitoring, management, and maintenance of these functions, operating under predefined Service Level Agreements (SLAs). The primary objective is to enhance operational efficiency, ensure reliability, and reduce costs associated with in-house management. Traditionally, businesses operated on a break/fix model, addressing IT issues as they arose. This reactive approach often led to prolonged downtimes and unpredictable expenses. In contrast, the managed services model is proactive , emphasizing continuous monitoring to anticipate and mitigate potential issues before they impact operations. This shift ensures smoother operations and allows internal teams to focus on core business activities rather than routine maintenance tasks. MSPs offer a broad spectrum of services, including: Network and Infrastructure Management : Ensuring optimal and secure operation of a company’s IT infrastructure. Security Services : Implementing measures to protect systems and data from cyber threats. Data Backup and Disaster Recovery : Safeguarding data integrity and ensuring business continuity in the event of unforeseen disruptions. Cloud Services : Managing cloud-based resources and services to provide scalability and flexibility. Is Service Management Relevant for Digital Transformation? Absolutely. In fact, without managed services, no company could go through a successful digital transformation. Why? Because new technologies are being introduced and adopted at an increasingly rapid pace. IT experts are needed on a continuous basis, not as someone to call when problems arise. By leveraging the expertise of MSPs, companies can benefit from the latest technologies and best practices without substantial internal investments . Developing a partnership with a great MSP relieves you from all the HR duties and higher expenses. Exploring Digital Transformation What is Digital Transformation? Digital transformation is the implementation of digital technologies and solutions into all areas of a company. It modifies and improves existing tools and processes. This is done via software and infrastructure. Here is the most simple way to put it – before and after digital transformation: Before: Paperwork Outdated software Software installed mostly on personal computers Now: No or minimal paperwork Custom software, just what your company needs, nothing less, nothing more Software running in the cloud, accessible from anywhere Why Is Digital Transformation a Must in Today’s World? Those who do not embrace digital transformation, are bound to be left behind. In simplest terms, they won’t be competitive anymore . While nearly 90% of large companies have undertaken digital transformation , only the leaders are creating value that’s hard to copy. What Are the Benefits of Digital Transformation? The two main ones, which every business owner wants, are: Revenue increase Cost reduction Digital transformation enables this at scale and is a long-term solution , when coupled with managed solution providers. At Q agency, we create software solutions tailored to your specific needs . Key components of digital transformation Process Digitization : Converting traditional manual processes into digital formats to enhance efficiency and accuracy. Business Model Innovation : Developing new revenue streams or modifying existing ones through digital platforms and services. Cultural Shift : Fostering a culture that embraces continuous learning, agility, and innovation, encouraging employees to adopt and adapt to new technologies. Customer Experience Enhancement : Utilizing digital tools to provide personalized, seamless, and engaging customer interactions. The driving force behind digital transformation stems from several factors: Evolving Customer Expectations : Modern customers demand swift, personalized, and omnichannel experiences. Technological Advancements : Emerging technologies like artificial intelligence, blockchain, and the Internet of Things offer new avenues for innovation and efficiency. Competitive Pressure : Companies must innovate continuously to maintain or gain a competitive edge in their respective markets. However, embarking on a digital transformation journey is not without challenges. Companies often encounter obstacles such as legacy system limitations, resistance to change, skill gaps, and significant financial investments. A well-structured strategy that aligns technological initiatives with business objectives is crucial for overcoming these hurdles. The Intersection of Managed Services and Digital Transformation The convergence of managed services and digital transformation is a strategic approach that enables companies to modernize their operations, optimize efficiency, and accelerate innovation. While digital transformation is an ambitious goal for many businesses, it comes with numerous challenges. This includes the need for advanced expertise, significant financial investments, and the continuous evolution of technology. Managed Service Providers (MSPs) help bridge this gap by offering specialized knowledge, infrastructure, and operational support, making the transition to digital solutions more seamless and efficient. Digital transformation is not just about adopting new technologies ; it requires a fundamental shift in how an company operates and delivers value to customers. However, many companies lack the internal resources to manage this shift effectively. This is where managed services come into play. MSPs provide the technical capabilities and strategic insights necessary to integrate digital solutions into existing business models without disrupting core operations. One of the primary reasons why MSPs play a crucial role in digital transformation is their ability to offer a holistic and proactive approach. Instead of businesses handling IT infrastructure, security, and digital applications internally, MSPs take on these responsibilities, allowing companies to focus on their core competencies. Moreover, MSPs continuously monitor IT environments, ensuring systems run optimally and mitigating potential risks before they become major issues. In essence, the integration of managed services into digital transformation initiatives is a game-changer for businesses seeking to innovate while minimizing risks and operational disruptions. By leveraging MSPs, companies can accelerate their digital journeys, enhance customer experiences, and position themselves for long-term success in an increasingly digital world. How Managed Services Propel Digital Transformation Managed services play a pivotal role in accelerating digital transformation by providing businesses with the necessary infrastructure, expertise, and ongoing support to adopt and integrate modern technologies. The following key areas highlight how MSPs drive digital transformation efforts: Expertise and Experience: One of the most significant barriers to digital transformation is the lack of in-house expertise to manage emerging technologies such as artificial intelligence, machine learning, blockchain, and cloud computing. MSPs bring years of experience and specialized knowledge in these areas, ensuring that digital transformation initiatives are implemented efficiently and effectively. They provide consulting, deployment, and continuous monitoring, reducing the learning curve and allowing businesses to harness the full potential of digital technologies. Scalability and Flexibility: Digital transformation requires companies to adapt quickly to changing market conditions and customer expectations. MSPs provide scalable solutions that enable businesses to expand or contract their IT resources as needed. Whether a company is experiencing rapid growth or facing temporary slowdowns, MSPs ensure that digital infrastructure aligns with business objectives without excessive costs or operational disruptions. Enhanced Security and Compliance: Security is a critical concern for businesses undergoing digital transformation, as cyber threats and regulatory requirements continue to evolve. MSPs offer robust security frameworks, including real-time threat detection, data encryption, and compliance management. By partnering with an MSP, businesses can mitigate cybersecurity risks while ensuring compliance with industry-specific regulations such as GDPR, HIPAA, and SOC 2. Cost Optimization: Digital transformation often requires significant financial investment in IT infrastructure, software, and skilled personnel. MSPs help reduce costs by offering subscription-based services that eliminate the need for large upfront capital expenditures. Instead of investing in expensive hardware and maintaining an in-house IT team, companies can leverage MSPs to provide cost-effective, on-demand technology solutions that align with their budgets. Continuous Monitoring and Support: Unlike traditional IT departments that may struggle with maintaining 24/7 operational oversight, MSPs provide continuous monitoring and proactive support. They use advanced analytics and automation tools to detect and resolve issues before they impact business operations. This proactive approach enhances system reliability, minimizes downtime, and improves overall efficiency. Cloud Enablement and Digital Infrastructure Management: The cloud is a key component of digital transformation, enabling businesses to operate more flexibly and efficiently. MSPs facilitate cloud migration, optimize cloud environments, and manage hybrid or multi-cloud setups. They ensure that businesses can leverage cloud computing benefits, such as enhanced collaboration, storage scalability, and seamless application integration. Business Continuity and Disaster Recovery: Digital transformation introduces new risks, including potential data loss or system failures. MSPs provide disaster recovery and business continuity solutions, ensuring that businesses can recover critical data and resume operations quickly in case of an outage or cyberattack. With robust backup strategies and redundancy planning, MSPs minimize disruptions and maintain business resilience. Driving Innovation through Automation and AI: Many digital transformation initiatives focus on automating manual processes to enhance efficiency. MSPs integrate AI-driven solutions, robotic process automation (RPA), and machine learning technologies to streamline workflows, reduce errors, and improve decision-making. This allows companies to optimize operations and free up resources for more strategic initiatives. Case in Point: The Financial Services Sector The financial services industry exemplifies the critical role of managed services in digital transformation. Financial institutions are under constant pressure to modernize their systems to meet regulatory requirements, enhance customer experiences, and fend off fintech competitors. However, technological transformation in this sector often comes with significant challenges, including cost overruns and delays. For instance, a report highlighted that large-scale technology transformations typically experience cost overruns of about $1 billion and delays exceeding two years. By partnering with MSPs, financial institutions can navigate these challenges more effectively. MSPs provide the necessary infrastructure, security, and compliance support, enabling these institutions to focus on delivering innovative financial products and services without being bogged down by the complexities of IT management. Digital Transformation Managed Services in the FinTech Industry – Case Study Smart Pension, one of the fastest-growing fintech companies in the United Kingdom, offers their clients digital-first pension and investments platform with contribution master trust. Q agency has helped Smart Pension’s digital transformation by offering managed services via a dedicated team consisting of: Back-end software developers Quality assurance engineers Product Owners. This partnership lasts more than six years and the dedicated team employed by Q became a cornerstone of it. After going through the discovery and development phases, the end result was the implementation of 7 different calculators, improvements on two existing integrations, the introduction of a new payment retry mechanism and testing calculators on big amounts of data. Contact us today to discuss how we can help you achieve your goals. Conclusion In an era where digital agility is paramount, the symbiotic relationship between managed services and digital transformation cannot be overstated. MSPs offer the expertise, scalability, and operational efficiency that companies need to embark on successful digital transformation journeys. Key takeaway : By integrating managed services into their strategic plans, businesses can focus on their core products and services. What’s next? Evaluate your IT and software engineering needs. Explore how an MSP can support your long-term goals. Consider hiring a nearshore MSP with a proven track record , like Q agency. If you’re ready to take the next step, contact us today: Vinka Đurđević Vinka is a senior project manager with more than 12 years of experience in IT. She is a certified Scrum Master, PMP and Agile Practitioner with a background in software development and Salesforce. She enjoys working on dynamic projects and loves collaborating with teams to get things done. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 24, 2025 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 24, 2025 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Discovery Phase in Software Development - Tech Consulting and Software Engineering URL: https://q.agency/blog/discovery-phase-in-software-development/ Why do you need a discovery phase in software development? See what are Strategy Discovery, Technical Discovery and Digital Product Discovery. Discovery Phase in Software Development | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Discovery Phase in Software Development Discovery Phase in Software Development March 5, 2025 — 16 min read One of the most common questions in digital product development is: Why do we need a discovery phase? In my experience, skipping this crucial step often leads to unclear goals, misaligned expectations, and costly rework down the line. A well-executed discovery helps answer critical questions, aligns teams, and ensures that we’re building something valuable, feasible, and strategically sound. The discovery phase can set the stage for success or lead to costly challenges if overlooked. The discovery phase isn’t just about gathering requirements — it’s about strategic alignment, user understanding, and setting a realistic project roadmap. Anyone who has ever been part of a discovery or built a product knows that this phase is the game-changer — shaping digital products that truly resonate with users and drive serious business value. When Do You Need a Discovery Phase in Software Development? A discovery phase is essential for: New product development: To validate ideas and define the MVP. Complex projects: Involving multiple integrations, high scalability, or regulatory constraints. Digital transformation initiatives: To align legacy systems with modern technology. Pivoting existing products: To explore new markets or features. Projects with high uncertainty: Where user needs or technical feasibility are unclear. Investing in discovery ensures that the product is strategically aligned and technically feasible, reducing risks and optimizing resource allocation. The discovery phase reduces risks, clarifies scope, and aligns stakeholders on goals and expectations. It allows teams to validate ideas, refine user journeys, and select the right technology stack. Done well, it avoids costly pivots during development and ensures that the product solves real user problems. Key objectives: Understanding business goals: Aligning product vision with strategic business objectives. User-centric design: Ensuring the product meets user needs through validated user journeys. Technical feasibility: Confirming that the solution is technically viable and scalable. Budget and timeline accuracy: Defining clear scope, deliverables, and accurate estimations. Discovery is not a one-size-fits-all process, and the approach can differ significantly between a digital agency and a product company. In a product company , discovery is often continuous, deeply embedded in the product lifecycle, and guided by long-term product strategy. Teams iterate over time, fine-tuning user experience and technical solutions based on ongoing insights. In a digital agency , such as Q, discovery is usually time-boxed and project-specific. The challenge lies in rapidly aligning with the client’s vision, uncovering unknowns, and defining a viable roadmap within strict deadlines. Unlike product teams that can iterate indefinitely, agencies must strike a balance between thorough research and efficiency, ensuring that discovery delivers maximum value within a limited timeframe. Each project brings different requirements, stakeholders, and constraints, making customization essential. Types of Discovery: Customization is Key One of the biggest mistakes in discovery is applying a generic, templated approach to all projects. Every client has unique needs, challenges, and goals, which means discovery should be tailored to fit the project context, industry, and business model . A startup developing a new SaaS product requires a different discovery process than an enterprise upgrading a legacy system. To determine the right type of discovery for our clients, we follow a structured approach: Defining the Right Discovery Approach 1. Understanding the client’s business context: What are their goals? Are they launching something new, improving an existing product, or integrating with other systems? What is their market position? Are they entering a competitive space or innovating in a new area? Who are the key stakeholders? Are there internal teams that need to be involved? 2. Identifying project complexity & constraints: Does the project involve multiple integrations, complex business logic, or regulatory requirements? What is the expected timeline and budget? Does it allow for deep research or require a leaner approach? Are there existing technical solutions that need assessment, or are we starting from scratch? 3. Choosing the discovery focus: If business strategy is unclear → Strategy Discovery is prioritized. If user needs and UX direction are the main concerns → Product Discovery is the key. If technical feasibility is uncertain → A Technical Discovery is necessary. The Key to Successful Discovery: Flexibility By customizing the discovery approach based on the client’s business model, technical landscape, and market positioning, we ensure that our findings are relevant, actionable, and aligned with their strategic goals. A rigid framework won’t work — each project requires a dynamic approach that adapts to its unique context. Types of Discoveries in Q At Q, we tailor our discovery processes to the unique needs of each client and project, ensuring that every engagement is relevant, effective, and continuously evolving to meet emerging challenges and opportunities. The three main types of discovery are: Strategy Discovery Technical Discovery Product Discovery 1. Strategy Discovery Strategy Discovery aligns the product vision with business goals and market needs. It ensures that the product is not only technically feasible but also strategically sound. In strategy discovery we are focused on providing answers to 3 main questions : What? – What are the key mega trends that are shaping the user’s world? Who? – Who are you users and how are their values and aspirations creating new values? How? – How are companies and other industry players shaping the future? Strategy discovery is not just about defining a roadmap — it involves structured exploration, validation, and refinement of ideas before committing to full development. The Q Innovation Process provides a structured framework for strategy discovery, ensuring that ideas are validated before moving into full development. The process follows these key phases: Immersion and framing: Understanding business objectives, customer needs, market trends, and competitive landscape. Opportunity mapping: Identifying key market gaps and defining value propositions. Concept ideation: Developing and prototyping potential solutions. Concept validation: Testing and refining solutions based on real-world feedback. Strategic concept definition: Finalizing the product direction, value proposition, and key features. This iterative approach ensures that businesses make informed decisions, reducing risks while fostering innovation-driven growth. Strategy Deliverables Include: Business goals & market research report : Insights into market trends, competitive analysis, and business objectives. User research & insights : Gathering qualitative and quantitative data through interviews, surveys, and behavioral analysis to understand user needs and pain points. Opportunity areas mapping : Identification of key customer needs and market gaps. Value proposition definition : Clear articulation of product value and differentiation. Prototyping & concept designs : Early-stage mockups and visual representations of proposed solutions. Testing & validation reports : Results from user testing, A/B testing, and iteration cycles. Strategic product roadmap : High-level product development timeline with prioritized initiatives. Hero features definition : Identifying the core features that will differentiate the product in the market. Communication & visual direction : Guidelines on brand positioning, messaging, and product identity. Strategic product roadmap – one of the deliverables from the discovery phase The Value of Strategy Discovery for Clients A well-executed Strategy Discovery helps businesses avoid costly missteps and ensures that every investment aligns with market needs and business goals. It delivers value by: Ensuring market fit : Validates the product idea before full development, reducing the risk of failure. Optimizing development costs : Avoids unnecessary features, focusing resources on what truly matters. Speeding up time to market : Provides a clear roadmap, eliminating bottlenecks and decision paralysis. Boosting investor confidence : A well-researched strategy attracts funding and stakeholder buy-in. When to Offer Strategy Discovery? Clients should select Strategy Discovery when they: Have an idea but need to validate its market potential. Want to differentiate their product in a competitive landscape. Are expanding into new markets or pivoting their business model. Need a clear roadmap for scaling an existing product. ROI: How Strategy Discovery Saves Money Investing in Strategy Discovery helps businesses make smarter financial decisions: Early validation prevents costly mistakes: Saves up to 50% on budget overruns caused by rework. Focused development increases efficiency: Reduces time-to-market by 30-40% by defining key priorities upfront. Higher product adoption = more revenue: User-driven strategy leads to better retention and customer lifetime value. 2. Technical Discovery Technical discovery assesses the technical feasibility of the solution. It involves evaluating the current system architecture, identifying technical challenges, and selecting the right technology stack. The specific deliverables in a technical discovery vary based on project needs . Some deliverables are essential for all technical discoveries, while others depend on project complexity, existing infrastructure, and specific technical challenges. The decision to include additional deliverables is based on the project’s complexity, timeline, and business goals. Must-have deliverables (essential for all technical discoveries): Architecture diagrams: High-level system architecture for scalability and future growth. Tech stack Analysis: Choosing the best tools and frameworks that align with business and technical goals. Risk identification: Identifying potential technical risks, dependencies, and mitigation strategies. Infrastructure diagrams: Visualizing current and proposed infrastructure to ensure system reliability and scalability. Product Backlog setup and estimations: Creating an initial backlog with prioritized features and estimated development efforts. Required development team roles: Identifying the necessary technical roles, including developers, DevOps, and QA specialists. Should-have deliverables (depending on discovery needs): Technical inputs on user stories: Ensuring that functional requirements align with technical capabilities, shaping development priorities. Test scenario/test plan: Outlining test cases and validation procedures to ensure system reliability and quality assurance. Project initiation document: Formalizing the scope, objectives, and key stakeholders for the development phase. Clickable prototype: Creating an interactive UI prototype to validate user interactions before development begins. User experience documentation: Ensuring UI/UX best practices are incorporated to enhance usability and accessibility. The Value of Technical Discovery for Clients A well-executed Technical Discovery ensures that businesses invest in a solution that is scalable, secure, and technically feasible. Without it, projects risk costly delays, system failures, and unforeseen technical bottlenecks. Here’s how it delivers value: Reduces technical risks: Identifies potential issues early, preventing costly rework during development. Optimizes system architecture: Ensures a robust, scalable, and maintainable infrastructure. Aligns technology with business goals: Selects the right tech stack based on current and future needs. Improves cost efficiency: Prevents overspending on unnecessary technologies and infrastructure. Streamlines development: Establishes clear technical requirements, reducing uncertainties for developers. When to Offer Technical Discovery Clients should select for Technical Discovery when they: Have a complex system requiring multiple integrations or high scalability. Need to validate the feasibility of a proposed solution before development. Are modernizing legacy systems and need to assess risks and migration strategies. Are working with new or unfamiliar technologies (e.g., AI, blockchain, IoT). Require compliance and security assessments in regulated industries. ROI: How Technical Discovery Saves Money Investing in Technical Discovery prevents costly mistakes and maximizes ROI: Prevents expensive rework: Resolving technical issues upfront reduces development costs by 30-50%. Enhances performance & scalability: Avoids performance failures that could result in lost revenue and customer churn. Optimizes cloud & infrastructure costs: Ensures efficient cloud usage, reducing infrastructure expenses by 20-40%. Shortens development time: Well-defined technical specs eliminate uncertainties, reducing time-to-market . 3. Product Discovery A well-structured Product Discovery ensures that businesses invest in products that are user-driven, market-aligned, and technically feasible. Without it, teams risk building features that don’t resonate with users, leading to low adoption and wasted resources. Here’s how it delivers value: Validates market demand: Ensures the product solves real user problems before investing in development. Reduces business risk: Minimizes the chances of launching a product that fails due to lack of market fit. Prioritizes high-impact features: Helps focus on essential features for the MVP instead of unnecessary complexity. Speeds up development: Provides clear user insights and functional requirements, reducing iterations and rework. Aligns stakeholders: Ensures that all teams — business, product, and tech — are aligned on goals and expectations. When to Offer Product Discovery Clients should select Product Discovery when they: Have a new product idea and need to validate its market potential. Are uncertain about user needs and behaviors and require data-driven insights. Want to define the MVP scope to avoid feature bloat and optimize costs. Need to refine their value proposition and competitive positioning. Plan to improve an existing product with better user experience and feature optimization. Product Discovery Deliverables The scope of Product Discovery deliverables depends on the duration, complexity, project needs, and budget. A lean discovery may focus on core research and an MVP roadmap, while an extended discovery could include deeper user research, prototyping, and validation. Core deliverables (common across all product discoveries): Business goals & market research report: Insights into market trends, competitive analysis, and business objectives. Opportunity areas mapping: Identification of key customer needs and market gaps. Value proposition definition: Clear articulation of product value and differentiation. User research & insights: Gathering qualitative and quantitative data through interviews, surveys, and behavioral analysis to understand user needs and pain points. Strategic product roadmap: High-level product development timeline with prioritized initiatives. MVP definition: Prioritizing core features that deliver maximum value. Product backlog setup and estimations: Initial backlog structuring and resource planning. Extended deliverables (depending on project needs & budget): Prototyping & concept designs: Early-stage mockups and visual representations of proposed solutions. Testing & validation reports: Results from user testing, A/B testing, and iteration cycles. Hero features definition: Identifying the core features that will differentiate the product in the market. Communication & visual direction: Guidelines on brand positioning, messaging, and product identity. User personas & journeys: Understanding user behaviors and motivations to shape UX decisions. Clickable prototype: Interactive UI prototype to validate user interactions before development. By tailoring the Product Discovery deliverables to the project’s scope, we ensure businesses get the insights and validation they need — without over-investing in unnecessary activities. The flexibility of the discovery phase ensures that companies build the right product with the right strategy from day one . Comparing Strategy, Product, and Technical Discovery Each type of discovery serves a distinct purpose, depending on the project needs and business objectives. The table below provides a high-level comparison: Aspect Strategy Discovery Product Discovery Technical Discovery Purpose Align product vision with business goals and market needs. Validate user needs and define the best product approach. Assess technical feasibility and system requirements. Key Questions Answered Is this the right product for the business? What is the market opportunity? Does this product solve a real problem for users? What features should be prioritized? Is the solution technically feasible? What are the risks and constraints? Main Activities Market research, business model validation, competitive analysis, roadmap planning. User research, prototyping, defining MVP scope, usability testing. Architecture planning, tech stack selection, risk analysis, infrastructure review. Key Deliverables Business strategy, competitive landscape analysis, value proposition definition, strategic roadmap. User personas, MVP definition, wireframes/prototypes, product roadmap. High-level architecture, tech stack recommendations, risk assessment, infrastructure diagrams. When to Choose When entering a new market, redefining a business model, or ensuring alignment between business goals and product development. When launching a new product, refining an existing one, or improving user experience. When working with complex systems, new technologies, or projects requiring high scalability and performance. Key ROI Benefits Ensures market fit, minimizes business risk, improves stakeholder confidence. Reduces development waste, improves adoption rates, prioritizes high-value features. Lowers technical risks, prevents costly redevelopment, ensures system scalability. Real-Life Case Study: Product Discovery in Action The Challenge A global leader in the dental industry needed to modernize its medical education (MedEdu) tracking system. Their existing process relied on manual data entry and fragmented tools, making it difficult to generate insights on education activities, customer touchpoints, and editorial planning. The goal was to develop a centralized platform that would allow users to log in with a single credential and manage their educational reports efficiently. Discovery Approach To define a scalable and efficient solution, we conducted a 5-week discovery phase , focusing on: 1. Understanding the current system (AS-IS Analysis) Workshops to identify business objectives and map existing workflows. Alignment on terminology and key pain points in tracking MedEdu activities. 2. Defining the future state (TO-BE Analysis) Creating a new process for tracking education reports and customer touchpoints. Defining user roles and access management across multiple platforms. 3. Technical and product validation High-level technical architecture planning and integrations with existing tools. Wireframes and user stories to define the Minimum Viable Product (MVP). 4. Finalizing deliverables A structured development roadmap with backlog prioritization. Estimation and sprint planning to ensure efficient execution in Agile development. Key Discovery Deliverables The project resulted in: → User Flow Diagrams → Sitemap → 32 wireframes detailing user interactions. → User stories & backlog with 12 epics and 82 user stories to structure development. → Technical documentation outlining system architecture and integrations. → MVP scope definition with estimated development effort between 560-844 man-days. The Value of Discovery for the Client By investing in discovery, the client: Reduced technical risk by identifying potential integration challenges upfront Optimized development costs by prioritizing high-value features. Accelerated time to market by aligning stakeholders on a clear roadmap. Ensured scalability with a robust technical foundation for future growth. The Cost of Skipping the Discovery Phase in Software Development – A Senior Business Analyst’s Perspective After years of working on digital products, one truth remains constant: a strong foundation is everything . Discovery is that foundation. When businesses choose to bypass this crucial step, they are gambling with time, money, and user trust. Here’s what happens when discovery is ignored: 🚨 No clear market need : Imagine investing months into development, only to realize that no one actually needs what you built. Without early validation, teams risk creating solutions that lack real demand. ⚠️ Scope creep & missed deadlines : Without a structured discovery, new features get added mid-development, deadlines shift, and projects spiral out of control. What should have been a streamlined MVP turns into a bloated, unfinished product. 👥 Loss of customers & poor first impressions : Users form opinions fast. A product that launches with poor UX, missing features, or technical issues is unlikely to win back frustrated customers. Without user research and use case validation, the first version could be the last. 💰 Unnecessary costs & rework : Fixing problems in development is 5-10x more expensive than catching them in discovery. From infrastructure changes to rethinking the user journey, skipping discovery often leads to major rework — burning time and budget. 🛠 Choosing the wrong tech stack : Technology decisions made without proper assessment can cripple a product’s scalability. Discovery ensures that the right architecture, integrations, and frameworks are selected from the start. The Bottom Line: Invest in Discovery or Pay for Mistakes Later Discovery isn’t a luxury — it’s a strategic necessity . Whether launching a new product, improving an existing one, or scaling for growth, skipping discovery is a risk no business can afford. The smartest companies don’t just build fast; they build right — by ensuring every decision is backed by research, validation, and strategic planning. Contact us to set up a meeting to discuss the discovery needs for your digital product. Hana Zlonoga With over 18 years of IT experience, Hana began her journey as a developer and engineer before transitioning to solution architecture and business analysis. She loves working on projects that blend creativity, analytical thinking and customer adaptability. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter P [truncated] ======================================================================== # Drupal: Core Solutions, Custom APIs & Symfony Collaboration - Tech Consulting and Software Engineering URL: https://q.agency/blog/drupal-core-solutions-custom-apis-symfony-collaboration/ Discover the power of Drupal, how well it integrates with Symfony, and the mutually beneficial relationship between the two frameworks. Drupal: Core Solutions, Custom APIs & Symfony Collaboration | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Drupal: Core Solutions, Custom APIs & Symfony Collaboration Drupal: Core Solutions, Custom APIs & Symfony Collaboration November 2, 2025 — 6 min read Discover the content-centric power of Drupal and how well it integrates with Symfony. Examine similar code snippets and the mutually beneficial relationship between the two frameworks. When starting a project, one of the most important decisions to make is the right backend option. Created in 2000 by Dries Buytaert, an undergrad at the University of Antwerp, Drupal has developed from a message board into a major player in content-focused backend development. Being open source and having an active and welcoming community, as well as a flexible architecture, Drupal is used in a wide range of industries, including government, education, media, and enterprise. Companies like NASA, Pfizer, and the Grammy Awards all use Drupal as their CMS of choice. What is Drupal? It is an open-source content management system with many out-of-the box features that makes it simple for developers to quickly create, organize, and share digital content. Its modular architecture makes it simple for programmers to incorporate new features, expanding its applicability for a variety of uses. That results in more than 50,000 free, community contributed modules that extend and customize Drupal functionality and over 3,000 free themes that change the look and feel of Drupal. Some of Drupal’s main uses cases are: 1. Content Management Systems (CMS) : The main use for which Drupal was developed. Great option for websites and applications needing advanced content management features. 2. Social Networking Platforms : Having highly configurable and customizable user roles and permissions makes Drupal a great choice for building community-driven applications. 3. E-commerce : The Drupal Commerce module, one of the most popular community contributed modules, provides a powerful platform for creating scalable and feature-rich online stores. 4. Government and Enterprise Solution s: Drupal is a great choice for large-scale enterprise and government projects due to its security and scalability. Even the White House used Drupal at one point. Some of the companies/brands using Drupal: NASA Tesla Purina The British Royal Family Pfizer Grammy Awards The Economist Drupal’s Architecture – Quick Overview Since Drupal was initially developed as a CMS, its architecture is heavily centered around content. Because of this, it’s the perfect choice for applications that need strong content management. Drupal does a great job in providing a content-first viewpoint, from complex content modeling to smooth data organization. Drupal’s flexibility is demonstrated by its ability to provide both headless and non-headless solutions. In a standard, monolithic scenario, Drupal serves as a complete solution, taking care of both content management and content presentation. However, in a headless configuration, Drupal keeps the two separate, giving developers the freedom to use the front-end technologies of their choice while delivering flexibility for a wide range of project requirements through standard REST based APIs. This flexibility makes it an amazing tool that can handle a wide range of project requirements thanks to its content-first approach. Symfony: Customization and Modularity Somewhat similar to Drupal, Symfony is defined by its component-based design and modular architecture. Because of this modularity, developers are able to modify the backend API to meet very specific, individual demands. Symfony’s flexibility allows developers to create robust APIs with total control. Drupal’s Out-of-the-Box REST API Options vs. Custom Solutions In a basic installation, Drupal includes modules (JSON:API/RESTful Web Services) that provide an efficient RESTful API that offers an extensive collection of endpoints for things like users, nodes, and taxonomy terms. If basic REST functionality satisfies the requirements, an off-the-shelf solution is a practical option. In a setting where time is of the essence and deadlines are tight, it’s a great choice because of its quick setup and ease of configuration. On the other hand, when projects require a more complex and custom solution, a custom REST API might be needed. Developers can customize solutions so that the API endpoints, responses, and authentication methods are suited to the particular requirements of the project. This is especially helpful when working with complicated data structures, special authentication techniques, or when following an API standard is essential. Code Comparison Let’s assume you have an endpoint that retrieves and returns all “Player” entities associated with Real Madrid and of Spanish nationality as a JSON response. In Drupal the code would look something like the following. // Drupal Code Snippet use SymfonyComponentHttpFoundationJsonResponse; // Assuming you are inside a Drupal controller method public function fetchPlayersAction() { $entity = 'player'; // Assuming content type machine name is 'player' // Query nodes based on properties $players = Drupal::entityTypeManager() ->getStorage('node') ->loadByProperties([ 'type' => $entity, 'field_team' => 'Real Madrid', 'field_nationality' => 'Spanish', ]); // Extract relevant data from players $response = []; foreach ($players as $player) { $response[] = [ 'name' => $player->label(), 'nationality' => $player->get('field_nationality')->value, // Add other relevant fields as needed ]; } // Return API response return new JsonResponse($response); } The same functionality in Symfony: // Symfony Code Snippet use SymfonyComponentHttpFoundationJsonResponse; use AppEntityPlayer; // Assuming you are inside a Symfony controller method public function fetchPlayersAction() { $players = $this->getDoctrine() ->getRepository(Player::class) ->findBy([ 'team' => 'Real Madrid', 'nationality' => 'Spanish', ]); // Extract relevant data from players $response = []; foreach ($players as $player) { $response[] = [ 'name' => $player->getName(), 'nationality' => $player->getNationality(), // Add other relevant fields as needed ]; } // Return API response return new JsonResponse($response); } Drupal’s Synergy with Symfony As of version 8.0, which was released in November 2015, Drupal introduced the integration of Symfony components in its architecture. This addition greatly expanded Drupal’s capabilities, giving it a modern and modular base. This connection gives developers the option to incorporate Symfony-specific features into Drupal projects with ease. In the above code we can see this connection in the shared use of Symfony’s JsonResponse component. The integration not only enhances Drupal’s developer experience but also allows them to transition easily between Drupal and Symfony projects. Conclusion Comparing Drupal to Symfony for backend API development reveals a complex environment where each framework has particular advantages. Symfony’s modularity and customisation features suit projects requiring precise management, whereas Drupal’s content-centric approach and integrated solutions excel in situations requiring quick development. Drupal’s assimilation of Symfony components is an example of cooperative evolution that gives developers a flexible toolkit. The decision between Drupal and Symfony ultimately comes down to project requirements and development philosophies, demonstrating how fluid and integrated current PHP backend programming is. Alan Baudoin With over 8 years of experience, Alan is a skilled backend developer specializing in Drupal site development. His expertise lies in crafting efficient and scalable solutions within the Drupal ecosystem. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 2, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 2, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Early AI Technology Adoption: Launch of Q's AI R&D Vertical - Tech Consulting and Software Engineering URL: https://q.agency/blog/early-ai-technology-adoption-launch-ai-rd-vertical/ Long before the AI technology hype, we'd made a decision to turn Q into a data-driven company, and now we're launching a new AI R&D vertical. Early AI Technology Adoption: Launch of Q's AI R&D Vertical | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Early AI Technology Adoption: Launch of Q’s AI R&D Vertical Early AI Technology Adoption: Launch of Q’s AI R&D Vertical June 3, 2024 — 6 min read Long before the hype about the AI technology revolution, we had made a foundational decision: converting our business into a data-driven company. This guideline, therefore, gave birth to our Data Warehouse (DWH) project, an initiative to centrally consolidate our varied sets of business data. This mechanism of data collection partially prepared us for the AI wave waiting across industries. As AI technology has evolved from a curiosity to a mainstream necessity, we found ourselves standing taller with our foresight and foundational work. This blog will take you through our journey—from laying down a solid data framework to implementing sophisticated AI tools for bolstering our operational efficiency and competitive edge. From Data Centralization to AI Readiness Our journey started with the establishment of a Data Warehouse — a repository consolidating data from various business processes into a structured and available-for-access format. Such a strategic move was not only about organizing what was already available in terms of data; it literally laid the core and indispensable groundwork for any future AI-driven initiatives. At the time we felt that this required one place because our data needed to be housed for efficient use. Only now, after AI has gone mainstream, do we actually know how important that initiative was. Cross-Departmental engagement With that data poised and waiting, AI technologies came as an opportunity to further enable business processes. Our engineers and IT specialists did not sit in their own departments; they reached out to every other department in order to understand the uniqueness of the challenges they face and what their needs are like. Areas being enhanced by AI One of the results of our efforts was our ChatBot tool. Developed using Flutter, the mobile and web application supports organizational units from developers to business analysts, solution architects, and project managers. Q ChatBot Flutter application Realizing the potential impact from AI, the company rolled out an educational campaign across the company describing what could be offered through our AI technologies, including a detailed tutorial for the ChatBot. It didn’t just tell but excited our team to the possibilities and encouraged them to think how AI could be put to further use in their respective work areas. Continuous learning and development Our commitment to AI technology takes the form not just of direct applications but also through continuous learning and adjustment. We learn and modify continually, not from the press releases about our latest widgets or PR quotes at our website but from actively publishing blogs, case studies and taking part in discussions when it comes to AI. That guarantees our staff is at the top of advancements in technology. AI-Powered Tools One of the big efforts that we have is an Estimation Tool built with the power of AI, enabling automation right from backlog generation to estimates and proposals. This particularly impacts our presales process by fast-tracking it tenfold. High level representation of Estimation Tool’s flow Second, we have built an in-house chatbot that uses our current knowledge base located in Confluence. This is an AI chatbot that responds to employee inquiries instantly. This is on the various company policies and procedures, thus ensuring that the organizational information required by its staff is accessed instantly. Three-Tier AI Strategy Our AI strategy is built along three levels: using AI tools for daily operations, enhancing in-house tools meeting organizational needs, and producing AI-powered products and services for our customers. AI R&D Vertical Realizing the major impact that AI could have on our business, we decided to set up a dedicated AI Research and Development (R&D) vertical. We were not just keeping pace with trends but setting trends. With the setting up of a dedicated AI R&D vertical, we have put substantial time, budget, and focus to deep dive into AI. This commitment has ensured that the initiatives around AI get undivided focus, free from the hiccups of several other operational priorities. We assigned several critical functions to our R&D team. Innovation and Exploration The R&D vertical works at the cutting-edge of AI technology, exploring new advancements and applications. This has to include not only taking up existing technologies but rather innovating proprietary AI solutions, catering to our specific needs. Cross-Departmental Integration The other very important responsibility of this vertical is the mandate to ensure that the developed AI tools and systems are transferable to the departments without any hiccups. This also helps in ensuring that every area within the firm benefits from the advancements taking place in AI, hence creating a holistic environment for growth. Delivering AI-Driven Solutions to Clients Our AI R&D vertical is playing a very pivotal role in translating in-house developed innovations into feasible offerings for our clients. This is through building the products and services with thorough testing and customization, ensuring that they fit perfectly into the exact needs of a given client. In doing so, we not only serve them better but also empower them toward the use of AI for their competitive advantage. We design these solutions, client-focused, to smoothen operations, reduce costs, and enhance decision-making processes. Fostering an AI Culture Within the Company One of the most transformational roles that our AI R&D vertical arguably plays a significant part in our mission is AI-centric culture across the organization. This includes: Education and Training The staff is exposed to regular workshops, seminars, and training sections to ensure that all staff of whatever department or position they hold are aware of what AI fundamentally is and how it can be used in their areas. Collaborative Innovation Inspire cross-department collaboration in bringing forward and developing new AI ideas not limited in the tech-only corners of the company but integrated across the whole fabric of the business. Promoting AI Literacy We aim to demystify and increase AI literacy across all our employees with the provision of resources and tools. It will help remove the mystique from AI and help foster a more innovative mindset among all. Recognition and Incentives This will also help in keeping the motivation of our teams at very high levels through recognizing and rewarding AI-driven initiatives and innovations within the company. Conclusion The above additional responsibilities of our AI R&D vertical are important to ensure that our AI technology does not remain a part of our internal tools only but rather grows, improves our market offering, and changes organizational culture. We are building this dual focus of both our internal learning and giving the best innovative AI-driven solution to our clients in their context. In doing so, through embedding AI deep into both our product lines and corporate culture, we make sure our dedication to AI overarches the promise of operational efficiency to become a core part of who we are and where we are going. Zlatko Matokanovic Q's Director of AI Research and Development has over 11 years of experience in mobile development, mainly in iOS. Sharpening his organizational and people skills while leading a new vertical at Q are his forte, and when not working, Zlatko loves to play drums, tinker with IoT, do crossfit, and try to make every day interesting for his two young sons. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 3, 2024 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 3, 2024 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Elegant Tests With Laravel and Pest - Tech Consulting and Software Engineering URL: https://q.agency/blog/elegant-tests-with-laravel-and-pest/ In this blog post, find out how to write elegant tests using Pest in combination with the Laravel PHP application framework. Elegant Tests With Laravel and Pest | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Elegant Tests With Laravel and Pest Elegant Tests With Laravel and Pest August 10, 2023 — 2 min read In this blog post, you’ll learn interesting and highly practical insights about the Pest PHP testing framework, alongside convenient examples on how to use Pest in combination with the Laravel PHP application framework. Pest framework is a modern testing framework for PHP applications that provides a more readable and expressive syntax for writing tests. It was created by Nuno Maduro, a well-known PHP contributor. Using the Pest framework, developers can write tests that are easy to read, understand, and maintain. It offers a clean and elegant syntax that allows developers to focus on writing tests that accurately reflect the behavior of their application, rather than getting bogged down in boilerplate code or complex testing syntax. It is important to mention that the Pest framework is built as an abstraction layer upon PHPUnit and these two testing frameworks are completely interoperable. What this means in practice is that developers can use functionalities of both frameworks to their liking, either in the same or separate test cases on their projects. One handy feature that Pest includes is the possibility of using PHP’s anonymous functions and closures to create a more readable and expressive syntax. This allows developers to write tests that read like natural language, making it easier to understand what the test is doing and what it is testing. The Pest framework also offers a number of advanced features, such as test doubles, dependency injection, and parallel testing, that can help developers write more effective tests with less code. Notable features Expectations Pest uses the expectation API which provides a powerful and expressive way to make assertions in your tests using the expect() method. It comes packed with a wide range of common assertion methods that cover various testing scenarios. These assertions include checking for equality ( toBe() , toEqual() ), asserting the presence or absence of elements ( toContain() , toBeEmpty() ), comparing values ( toBeGreaterThan() , toBeLessThan() ), and more. The expectation API also allows method chaining and negation. You can chain multiple methods together to create more advanced assertions, improving the expressiveness of your tests. Assertions can be easily negated by placing the not modifier before any expectation method. toBeInt() // Assert that the result is an integer ->toBe(8) // Assert that the result value is 8 ->not->toBeJson() // Using "not" modifier, asserting that the value isn't JSON ->not->toBe(5); // Another usage example of "not" modifier }); Hooks Pest provides hooks that allow you to define actions that will run before and after your tests. Hooks help you prepare the necessary conditions for your tests and perform cleanup operations when they are completed. The beforeEach() hook can be used to define actions that run before each test case, ensuring a clean and consistent state for each test. The afterEach() hook allows you to define actions that run after each test case, such as resetting variables or cleaning up resources. There are also beforeAll() and afterAll() “global” hooks, which run once before and after all tests inside a single test file. These hooks are useful for tasks like setting up and tearing down databases or other expensive operations. bookRepository = new BookRepository(); }); it('creates books', function () { $book = $this->bookRepository->create(); expect($book)->toBeInstanceOf(Book::class); }); afterEach(function () { $this->bookRepository->reset(); }); afterAll(function () { // Executes last, after all tests are done // NOTE: $this object CAN NOT be used inside beforeAll() and afterAll() methods }); Grouping & Filtering Pest has various filtering options, allowing you to selectively run tests or groups of tests. Tests can be filtered based on their names, groups, or other specified criteria. There are several command-line options, for example, you can use the –filter option to run tests matching a particular pattern or expression, the –dirty option will only run tests that are uncommitted according to Git, the –bail option will stop Pest execution on first encountered error. More of these options can be found in the official documentation. Pest also allows you to group your tests together for better organization and readability. This can be done by using the group() function and providing a descriptive name for the group. It helps organize tests logically based on features, or any other criteria that make sense for your application. After assigning a group, you can use the –group option to run that specific test group. Optimization When testing with Pest, there are optimization techniques which can be used to make tests more efficient . One of them is parallel testing, which allows Pest to run multiple tests inside multiple separate processes. This can speed up the testing dramatically. You can run tests in parallel with the following command: vendor/bin/pest –parallel –processes=4 Another noteworthy optimization technique that can be used with Pest is profiling. This comes in handy when there are a large number of tests in a project that don’t run efficiently. Usually they will cause slowdowns during test execution. Profiling can be done using the following command: vendor/bin/pest –profile This will generate a detailed report that highlights all tests that take the largest amount of time to execute. Those can then be optimized to be less resource intensive. Mocking Pest integrates seamlessly the with popular PHP mocking frameworks (eg. Mockery, Prophecy) . According to Pest’s documentation, Mockery is the preferred framework for using test doubles . You can use Pest’s mocking methods in conjunction with Mockery to create mock objects and define their behaviors. This allows you to test the functionality of specific classes, without invoking class dependencies, simply by using object mocks for those dependencies. By using Mockery, Pest allows you to make method expectations with shouldReceive() function, argument expectations by utilizing the with() function, and return value expectations with andReturn() method. Additional mocking methods, techniques and best practices can be found in Mockery’s official documentation. shouldReceive('login'); $auth->shouldReceive('authorize'); $user = new UserRepository($auth); expect($user->getAuthorized()) ->not->toBeEmpty(); // Invocations for 'login' and 'authorize' have been mocked, the 'getAuthorized' method should work }); Coverage Pest includes code coverage reporting options, allowing you to measure the extent to which your tests evaluate your codebase. To achieve this, Pest uses PHPUnit’s built-in code coverage capabilities (default configuration is stored in phpunit.xml file). Additional installation of XDebug 3.0+ or PCOV is necessary to generate a code coverage report . Code coverage analysis helps identify areas of your code that are not adequately covered by tests. This way you can identify untested code paths, improve the quality of your tests, and ensure better overall test coverage. To make a coverage report use the following command: vendor/bin/pest –coverage –min=80 Note that the command above also has the –min option. Pest also allows you to enforce a minimum threshold for your coverage. In case the coverage results are not greater than the specified threshold value, the coverage report will fail. Installation In the following steps we will set up a test project using Laravel PHP framework. Follow these instructions to install Pest framework in the Laravel project: 1. First, make sure you have a Laravel application set up and running. If you don’t have one already, you can create a new Laravel project using the following command in your terminal: composer create-project –prefer-dist laravel/laravel laravel-pest 2. Once you have Laravel ready, you can install the Pest framework using Composer. In your terminal, navigate to the root directory of your Laravel project and run the following command: composer require pestphp/pest –dev –with-all-dependencies This command will install Pest framework and all of its dependencies in your application’s vendor directory. 3. Once Pest framework is installed, you can initialize it using the pest command-line tool. From the application’s root directory, using the terminal, run the following command: vendor/bin/pest –init This command will create a new file named Pest.php in the tests directory, which can be used to configure and fine tune your testing framework settings. 4. To run your tests, you can use the following command: vendor/bin/pest This will run all of your Pest tests located in the tests directory. Output of the command above should look similar to this. And voilà! You now have Pest framework installed and can start writing tests for your application. If you encounter any issues during the installation process, be sure to check out the framework documentation or reach out to the Pest community for help. Writing Tests In this section, we’ll set up a small demo project. We’ll make unit tests for a repository class and write a feature test (some call them functional tests) for an API endpoint. The test examples that we will write should cover some common use cases of the Pest framework in your Laravel projects. 1. First, we need to make sure our development environment is up and running. In the project’s root directory, run the following command to start up Laravel Sail and the required Docker containers: vendor/bin/sail up -d 2. When the environment is ready, we make a Book model, factory and migration classes (the command vendor/bin/sail artisan will be used, since Laravel version 10 in this demo project is containerized by default): vendor/bin/sail artisan make:model –migration –factory Book In the Books migration class that was created, we define the structure of our database table. id(); $table->string('title', 512); $table->string('author', 128); $table->string('isbn', 13); $table->date('date_published'); $table->integer('number_sold'); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('books'); } }; The generated Book model class will help us instantiate objects representing the table entries. */ class BookFactory extends Factory { /** * Define the model's default state. * * @return array */ public function definition(): array { return [ 'title' => ucwords($this->faker->words($this->faker->numberBetween(1, 5), true)), 'author' => $this->faker->name(), 'isbn' => $this->faker->isbn13(), 'number_sold' => $this->faker->numberBetween(100, 1000000), 'date_published' => $this->faker->dateTime(), ]; } } 3. After the migration file is prepared, we execute the database migrations: vendor/bin/sail artisan migrate:fresh 4. Now we will manually create a BookRepository class in the app/Repositories folder. It should handle the database related operations, without cluttering our controller classes. $value) { $query->where($attribute, $value); } return $query->get(); } public function filterBy(array $parameters): Collection { $query = Book::query(); $query->where(function (Builder $subQuery) use ($parameters) { foreach ($parameters as $attribute => $value) { $subQuery->orWhere($attribute, 'like', '%' . $value . '%'); } }); return $query->get(); } } 5. With the following commands, controllers for the Books API endpoint will be generated. Inside of these controllers we will inject our BookRepository class and invoke the required methods. vendor/bin/sail artisan make:controller –api –invokable GetBooksController vendor/bin/sail artisan make:controller –api -i GetBookByIsbnController The GetBooksController.php and GetBookByIsbnController.php class files should look like this: validate([ 'title' => 'string', 'isbn' => 'string', 'author' => 'string', ]); $booksFound = $this->bookRepository->filterBy($validParameters); return new JsonResponse($booksFound); } } bookRepository->findBy([ $parameter = 'isbn' => $request->route()?->parameter($parameter) ]); return new JsonResponse($bookFound->first()); } } 6. After the controllers have been set up, API routes can be made available in routes/api.php file. where('isbn', '[0-9]{10,13}'); 7. Before we start writing any tests, we will make some minor adjustments in the Pest.php configuration file. The “Unit” folder must be added to the uses() method, this will allow the TestCase class to be bound to our unit tests. Also, we need to uncomment the line containing the RefreshDatabase class. This will allow the Pest framework to automatically clear the test data from the database when tests are finished, since all of the tests use Faker to generate dummy data with BookFactory class during testing. These adjustments should in the end look like this: in('Unit', 'Feature'); 8. Unlike PHPUnit, Pest test files don’t require definitions of test classes, you can just call methods directly as you will see in the following examples. The unit and feature test files and folders can be generated with the artisan command as follows: vendor/bin/sail artisan make:test –unit -p Repositories/BookRepositoryTest vendor/bin/sail artisan make:test –pest Endpoints/Books/BooksEndpointTest Now we can edit the generated BookRepositoryTest.php and BooksEndpointTest.php files to add the following code: [Gist – BookRepositoryTest.php] [Gist – BooksEndpointTest.php] 9. Last but not least, we can run these tests by executing the following command: vendor/bin/sail pest –group=books If everything was done correctly, the output should be successful for all assertions or expectations. All Pest tests were successful. Conclusion Pest framework is a powerful testing tool that can help developers write better tests in less time. Whether you’re new to testing or a seasoned developer, Pest framework is definitely worth checking out if you’re looking for a more modern and expressive way to write tests for Laravel or any other PHP applications. Filip Filipovic Filip is an experienced software engineer, specializing in backend web development with PHP. He enjoys creating robust and scalable applications using modern frameworks and technologies such as Laravel and Symfony. When not busy coding, Filip spends time with his family and improving his cooking skills. He also loves relaxing walks in nature, good craft beer, burek and gaming. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 10, 2023 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 10, 2023 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Microfrontends Enhance our Digital Solutions - Tech Consulting and Software Engineering URL: https://q.agency/blog/embracing-microfrontends-for-enhanced-digital-solutions/ Learn how we successfully integrated microfrontends into our development processes, showcasing our innovative approach. How Microfrontends Enhance our Digital Solutions | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Microfrontends Enhance our Digital Solutions How Microfrontends Enhance our Digital Solutions July 18, 2024 — 8 min read Q Pioneers Microfrontend Architecture for Large-Scale Projects Q has successfully integrated microfrontend architecture into its development processes, showcasing this innovative approach in a major project for a prominent client in the Middle East. This project, serving over 12 million users, demonstrates the substantial benefits of microfrontends in modern digital solutions. What are Microfrontends? Microfrontends represent an architectural style where a web application is divided into smaller, more manageable fragments, each owned by different teams. Inspired by the microservices model used in backend development, microfrontends allow for independent deployment, updates, and scaling of distinct parts of an application. A prime example of this technology in action is Spotify, which utilizes microfrontends to streamline its platform’s user experience. Advantages for Users and Developers For End-Users: Frequent Updates Each application segment can be updated independently, meaning faster bug fixes and feature enhancements without needing to rebuild the entire app. Dynamic Experience This leads to a more responsive and engaging user experience. For Developers: Modular Development Applications are broken down into smaller, manageable pieces, simplifying development and maintenance. Enhanced Collaboration The modularity accelerates workflows and reduces complexity, enhancing collaboration among development teams. Tools and Processes in Microfrontend Development Micro frontend developers typically work with a range of tools including: Webpack 5 for module bundling and module federation Module Federation allows applications to dynamically import remote modules (our microfrontends) FE JS framework for building components Docker for containerization and deployment CI/CD pipelines for continuous integration and delivery The development process begins with a detailed brief outlining the project requirements. This is followed by designing the architecture, where the application is divided into distinct, autonomous fragments. Each team develops their segment independently, ensuring it integrates seamlessly with others. Rigorous testing and iterative refinements lead to the final solution, providing a cohesive user experience despite the segmented approach. Challenges and Solutions While microfrontends offer significant flexibility and speed, they also introduce challenges, particularly in maintaining a cohesive design and ensuring system security. However, with robust design systems and stringent security protocols, these challenges are effectively managed. The division into smaller elements does not inherently introduce more vulnerabilities; rather, it allows for targeted security measures, enhancing overall system resilience. Cost Implications From a cost perspective, microfrontend solutions can be more economical in the long run. The modular approach reduces development time and resources required for maintenance and updates. While the initial setup may be slightly more complex, the efficiency gains and reduced downtime translate to cost savings for users. Conclusion Q’s implementation of microfrontend architecture in large-scale projects underscores the technology’s potential to revolutionize digital solutions. By enabling rapid updates, enhancing developer productivity, and maintaining system security, microfrontends represent a forward-thinking approach to web application development. As more companies recognize these benefits, microfrontends are poised to become a standard in the industry. How Q implements Microfrontends By decomposing our interface into distinct microfrontends, we efficiently manage key UI layout components such as the header, sidebar, footer etc.. Each microfrontend is independently developed, deployed, and maintained, ensuring a high level of flexibility and rapid iteration. Our independent services then seamlessly integrate these microfrontends using advanced lazy loading techniques; this approach not only optimizes performance but also allows us to deliver a cohesive and consistently high-quality user experience across all our digital platforms. Microapp Pattern Additionally, we adopt the microapp pattern, where each significant section of the application is treated as a standalone app. This approach allows teams to work on different features independently, further enhancing scalability and maintainability. By leveraging the microapp pattern, we can deploy updates more frequently and ensure that each part of the application can evolve without affecting others. Practical Implementation Initial Release: All component implementations were housed within our core library Any changes to these components caused a version bump Evolution of Core library to v2: Components’ implementation was relocated to a dedicated project (we’ll call it “Microfrontend Components”) v2 exclusively exports wrappers for those components, enabling developers to integrate microfrontends without extensive project rewrites How Does It All Come Together? React UI Library Our design system library React Core Library Fundamental library providing the core functionalities for the rest of our apps React Starter This acts as the starting point or boilerplate for new services. It includes the basic setup and configuration Service Standalone React service Microfrontends Self-contained frontend modules Below is a diagram of how that looks in practice: Examples Below are example component diagrams and an example of implementation of our PublicFooter microfrontend. Component Diagram Code Example import { type FC, lazy, Suspense } from 'react'; import { ErrorBoundary } from 'react-error-boundary'; type PublicFooterProps = { /* props declaration for this component */ }; const PublicFooterLazy = lazy( () => import('microfrontend_ref/PublicFooter') ); export const PublicFooter: FC = (props) => ( /* trigger the lazy import of the micro frontend chunk */ ); Webpack Module Federation A powerful feature introduced in Webpack 5 that facilitates the integration and sharing of code between different applications. This approach is particularly beneficial for microfrontend architectures, where various parts of an application can be developed, deployed, and maintained independently. Key Features and Benefits: Dynamic Importing of Remote Modules Module Federation allows applications to dynamically import remote modules, enabling the seamless integration of our microfrontends. Independent Deployment Different parts of an application can be updated and deployed independently without requiring a complete rebuild or redeployment of the entire application. Scalability and Maintainability By allowing parts of the application to be independently updated and deployed, Module Federation enhances scalability and maintainability. Each microfrontend can be developed, tested, and deployed independently, allowing for better resource allocation and easier management of large-scale applications. Webpack Config Example import pkg from '../package.json'; const webpackRemoteConfig = (name, deps) => ({ name, remotes: { /* Confirguration of microfrontend remotes */ }, shared: { react: { singleton: true, eager: true, requiredVersion: deps.react, }, 'react-dom': { singleton: true, requiredVersion: deps['react-dom'], }, }, }); const exampleMicroFrontendPlugin = new webpack.container.ModuleFederationPlugin( webpackRemoteConfig(pkg.name, pkg.dependencies) ); export default (mode) => ({ /* Rest of your config */ plugins: [ exampleMicroFrontendPlugin, ], }); Impact on the Bundle Size After migrating to the microfrontends the bundle size of our code got smaller, because it no longer used some of the components from the core library. Unfortunately, the overall bundle size of the whole application will eventually be bigger since now this code is loaded from microfrontends and they have to have some code duplicated (such as design system, react-core, etc.) to ensure independence and separation of the microfrontends from the app that renders them. After introducing microfrontends the whole bundle size of JavaScript files changed from 604kB to 722kB. Solutions for the Client This solution addresses several key challenges in modern large-scale web application development: Modularity and Scalability Easier to manage and scale by breaking down the application into smaller self-contained microfrontends. Performance Optimization Lazy loading of microfrontends ensures that only the necessary parts of the application are loaded when needed. This reduces the initial load time and improves the overall performance of the application. Maintainability Isolating different parts of the application into separate microfrontends simplifies maintenance. Updates or bug fixes can be made to a specific component without affecting the rest of the application. This reduces the risk of introducing new issues and makes the codebase more manageable. Flexibility and Reusability Microfrontends can be reused across multiple projects or different parts of the same application. This promotes code reuse and reduces duplication, leading to more efficient development processes. Technology Agnosticism Different microfrontends can be built using different technologies or frameworks if needed. This allows teams to choose the best tools for each specific part of the application, enabling a more versatile and adaptable development environment. Consistent User Experience Despite being developed independently, microfrontends can be integrated seamlessly to provide a cohesive user experience. This ensures that users perceive the application as a unified whole rather than a collection of disparate components. Project Case in Numbers In this project we integrated 15+ government services (similiar to the Croatian government portal “e-gradani”) using microfrontend architecture within a period of six months. Each service reuses shared components and infrastructure, significantly enhancing efficiency and scalability. Impact on Client’s Business Q’s implementation of microfrontends has significantly impacted our client’s business by enabling faster development cycles, improved application performance, and reduced maintenance costs. This has lead to increased productivity and efficiency of our development teams. The consistent and high-quality user experience provided by our microfrontend architecture has also enhanced customer satisfaction and engagement. Furthermore, this approach has allowed our clients to swiftly adapt to market changes and demands, implement new features with ease, and maintain a competitive edge. Hrvoje Canadija Hrvoje is a Solution Architect who likes his code as much as he likes his synths; small, simple, and modular. There is no request that is too complicated, a wish too demanding or coffee too strong. When he grows up, Hrvoje wants to be an F1 driver or abstract art painter. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 18, 2024 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 18, 2024 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Empathy and Understanding in Business Drive Better Delivery in IT Projects - Tech Consulting and Software Engineering URL: https://q.agency/blog/empathy-and-understanding-in-business-better-delivery-in-it-projects/ In this article, learn in what ways empathy and understanding in business lead to better delivery in IT projects. How Empathy and Understanding in Business Drive Better Delivery in IT Projects | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Empathy and Understanding in Business Drive Better Delivery in IT Projects How Empathy and Understanding in Business Drive Better Delivery in IT Projects November 7, 2025 — 7 min read Technology takes the high place in the modern world, but without people it would have very little meaning. Behind every IT project are individuals with their motivations and goals. Having to meet deadlines and manage budgets, the human side of the project is often neglected. That’s where empathy in business comes in. It is not just a nice-to-have quality, it is a very important skill that impacts delivery and drives success. Empathy allows teams to connect technical skills with emotional intelligence. It transforms the way teams communicate, make decisions, and collaborate with clients. If technology connects us, empathy and understanding in business keeps us connected , and this is how it happens. The Human Side of IT Projects Every IT project starts with technology and at the end it succeeds mostly because of people. Unfortunately projects fail very often not because of technical or financial issues, but because the human side was overlooked. Communication gaps, assumptions and different expectations are the reasons why projects don’t succeed. Empathy in business puts people in the centre allowing teams to see beyond requirements and deadlines, and truly understand the individuals behind every decision. When developers, analysts, and designers feel seen and understood, the collaboration between them starts happening automatically. By focusing on the human side , agencies and clients can create stronger relationships and healthier working cultures. When people feel heard and understood they communicate better, take ownership for their work and deliver better results. So how can we shift the focus from output to understanding? Why do high performing teams rely on empathy as a strategic skill? Empathy as a Core Business Skill Empathy belongs to a set of soft skills . But compared to other skills, it’s almost the hardest one to master. Empathy in business analysis, product development, and delivery directly affects the final product and its value. People that understand their clients and users often produce better solutions. Empathy isn’t about being too emotional, like many people think. It’s about being aware of what others need, how they feel, what they struggle with, so that we could point the discussion in the right direction. Every successful project should start with what we hear and not with what we are going to build. Why is listening More Important Than Talking? How many times have you heard a stakeholder asking for a “solution” instead of presenting the business need? How many technical workshops were you part in where experts jump straight to the “solution” without hearing the whole set of requirements? If teams don’t listen, they risk solving the wrong problem. Empathy and understanding in business start with curiosity and asking the right questions . It means being open to what others are saying, even if it challenges our assumptions. When someone starts talking, we shouldn’t impatiently wait to answer and share our opinion. Instead, we should truly listen, not just the words, but pay attention to body language, and what is behind the words. We should read between the lines and ask follow-up questions to understand them better to discover what they actually need. So, how do teams turn empathy into long lasting trust? Using Empathy and Understanding in Business to Build Trust Empathy without transparency quickly loses its value. Open communication, especially about challenges and mistakes, creates a safe space for everyone to share their thoughts. Trust will grow naturally when agencies and clients collaborate, not hiding behind processes and contracts. Transparency also enables shared responsibility. Instead of a blame culture, teams should work together to identify what can be improved. When empathy guides the client-agency partnership , they both share the same goals and work towards the same business outcomes. How does empathy in business transform client-agency relationships? Empathy in Client–Agency Relationship When agencies position themselves as partners with clients, empathy becomes the most important thing that connects those two worlds. Agencies that understand client’s ways of working and culture are able to adapt and respond to their needs better. Instead of following fixed contracts and plans, both sides co-create value and take shared ownership of results . Empathy in business turns the relationship into a long term collaboration rather than a vendor delivery of work. Business analysts and UX/UI designers play a key role in this process. By observing users, asking the right question and gathering feedback, they are able to understand business better and what lies behind each request. How understanding people deeply transforms the way we deliver products to users, especially in remote work setup? The Role of Empathy in Remote Collaboration Remote work setup requires different collaboration approaches . Agency experts that are able to show empathy easier adapt to client’s processes, rhythm and communication style. With empathy, people can see beyond tasks, understand someone’s background and character better and add human dimension to what they see and hear. This is where IT stops being only about technology and systems, and starts being about people. Empathy as a Competitive Advantage In a world of automation and AI, empathy is what adds to the technology to have a more human side . Agency experts that actively use empathy and coaching skills as their communication style have better relationships with the clients. It shouldn’t be an optional skill for an agency, but something that makes the biggest difference between them and any other vendor on the market. When agencies and clients use empathy in collaboration, they create long lasting partnerships. They understand people first, and technology second. What does it take to build this kind of trust across different teams? This is how Q uses empathy to drive delivery. Q — Empathy-Driven Delivery When Q started working on a digital transformation project for a client, we knew that our technical excellence will not be the only thing that will impact the overall success. Usually when we get requirements, we go directly into discovery, doing research and analysis, so that we could offer the best possible solution which meets the client’s needs. But, this time, we decided to take a different approach. Before the discovery started, we spent a couple of days with the client simply listening to their pain points and asking the right questions. This approach changed a lot and determined the nature of our relationship with this client. They started treating us as true partners that care about their goals and progress. Engineers, business analysts and QAs from Q joined daily stand-ups, retrospectives, and planning sessions . People adjusted to the client’s schedule and processes and had a rule to keep cameras on during meetings to establish connection with other team members. We weren’t just delivering code, we helped the client build their roadmap , improve processes and adopt more agile ways of working while co-creating solutions. The trust that was built through empathy meant that both sides could challenge each other freely, always looking for the best outcome. The results were visible very quickly after we started working together. Simpler and more frequent releases as well as feedback loops helped the team improve and develop new skills. Q made empathy part of our ways of working and redefined agency-client relationships through understanding and listening. The strongest partnerships are built when both sides feel heard , respected and safe to be honest. This is why we use empathy in business to make this possible. Conclusion Empathy and understanding in business is a skill that can be learned and mastered . It is not connected to the emotional state of the individual, but the approach someone takes in communication with team members and stakeholders. When agencies, clients, and teams approach each project with curiosity and understanding, the results are often higher value and better business outcomes. Technology changes all the time, but empathy exists in its original form. The most successful agencies will be the ones whose people can balance technical skills and human insight . If you’re looking for a partner that pairs deep technical expertise with a genuine understanding of your goals, reach out to us . Let’s build something truly meaningful together. Irena Cvetic Irena is our Engineering Lead with years of experience in the BA area who likes exploring and learning new things through every day work and communication with others. In her free time she enjoys reading different kinds of books, listening to the latest music hits and drinking good coffee. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 7, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 7, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Enhancing Utility Functions With JavaScript Proxy - Tech Consulting and Software Engineering URL: https://q.agency/blog/enhancing-utility-functions-with-javascript-proxy/ Explore JavaScript Proxy objects to enhance utility functions, boosting data objects and arrays with Proxy objects. Enhancing Utility Functions With JavaScript Proxy | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Enhancing Utility Functions With JavaScript Proxy Enhancing Utility Functions With JavaScript Proxy October 4, 2023 — 17 min read In this article, we’ll dive into JavaScript Proxy objects and make our utility functions even more powerful and maintainable by enhancing our data objects and arrays with Proxy objects. Building reusable, maintainable, and testable code following the single-responsibility principle has been an industry standard. Part of which involves creating utility functions to help us with simple and repetitive functionalities like formatting, validation, and type safety, just to name a few. Let’s check out the following example where we use two utility functions to format a user’s full name and bank account balance. They are so useful, right? Now, let’s say we used these functions in a few dozen files and a few months later, we need to add an extra attribute for these functions or change the return value type. We need to go over all those files and edit the function calls. Utility functions might be very useful and reusable on their own, but maintaining their calls or instances can still be a chore when dealing with major changes. When we think about our user data example, these two specific utility functions are closely related to the user object and serve as methods to format the raw data we get from the API. It wouldn’t make sense to include the formatted data in the API response, to avoid data duplication and database bloat, but it would be ideal if we could just get formatted data with user.fullName and user.balanceFormatted. That way, we also wouldn’t have to worry about importing and calling the right functions each time we want to get the formatted data. With JavaScript Proxy objects, we can do just that, and more! JavaScript Proxy Object JavaScript Proxy object takes a target object and a handler object which contains traps (functions that intercept native object methods) and creates a proxy for that object. const someProxy = new Proxy(targetObject, handler); It’s still an object and it works just like you’d expect it to. Let’s pass an empty object to the second argument for now just to see how it behaves just like any other object. We can access all methods and properties of the original object. const user = { firstName: "John", }; const userProxy = new Proxy(user, {}); console.log(userProxy.firstName); // John userProxy.firstName = "Johnny"; console.log(userProxy.firstName); // Johnny Where things get interesting is in the second argument – the handler object. This object allows us to intercept and redefine how we interact with the target object. This is also known as metaprogramming . For example, we can hook into the get method and extend the object with new properties without modifying the original object, or we can hook into the set method and add validation to prevent object values being changed if they do not meet validation requirements. Custom Get Handler For now, let’s just add a simple get trap. In the previous example, we used the get method of the original object, but now we are replacing it with our custom traps we have to cover all cases: Accessing object properties Fallback (error handling) Add custom functionality The get method handler gives us access to two values object – original object on which the proxy is attached to prop – name of the property that we’re trying to get const user = { firstName: "John", }; const getHandler = (obj, prop) => { // get object attributes if(prop in obj) { return obj[prop]; } // Extension - Custom attribute if(prop === "nickname") { return "Johnny"; } // Handle error return undefined; } const userProxy = new Proxy(user, { get: getHandler, }); console.log(userProxy.firstName); // "John" console.log(userProxy.nickname); // "Johnny" console.log(userProxy.age); // undefined We used a trap in our handle to intercept the call for a nickname property, which doesn’t exist in the original, target object. You might already get some ideas on how to solve our original problem, but first, let’s rework our code to use Reflect namespace. This complex topic is specific to metaprogramming, but what we need to know is only that we want to use Reflect to invoke the object’s internal methods – Reflect.get , Reflect.set , etc. const user = { firstName: "John", }; const getHandler = (obj, prop) => { // get object attributes if(prop in obj) { return Reflect.get(obj, prop); // Use object's static method } // Extension - Custom attribute if(prop === "nickname") { return "Johnny"; } // Handle error return undefined; } const userProxy = new Proxy(user, { get: getHandler, }); Same Object, Multiple Interfaces Going back to our user data example, let’s implement a proxy for our user object to get a formatted full name and account balance. This proxy will make use of our existing utility functions, but now we can get the formatted data directly from the object. We’ll intercept get calls for two properties: balance (existing property in user object) and fullName (doesn’t exist in user object). We’ll reuse our existing utility functions for formatting and call them in proxy traps. That way, utility functions are not coupled with a proxy handler and remain testable and reusable. /* UTILS */ const getFullName = (firstName, lastName, middleName) => [firstName, middleName, lastName].filter((n) => !!n).join(" "); const getFormattedBalance = (locale, currency, value) => { return new Intl.NumberFormat(locale, { style: "currency", currency }).format(value); }; /* PROXY */ const handleFullGet = (obj, prop) => { if (prop === "fullName") { return getFullName( Reflect.get(obj, "firstName"), Reflect.get(obj, "lastName"), Reflect.get(obj, "middleName") ); } if (prop === "balance") { return getFormattedBalance( Reflect.get(obj, "locale"), Reflect.get(obj, "currency"), Reflect.get(obj, "balance") ); } if (!(prop in obj)) { console.error(`${prop.toString()} doesn't exist in object`, obj); return; } return Reflect.get(obj, prop); }; const createUserDataProxy = (user) => { const proxy = new Proxy(user, { get: handleFullGet }); return proxy; }; /* USE */ const user = createUserDataProxy({ firstName: "John", middleName: "", lastName: "Doe", email: "john.doe@email.com", balance: 2649.53, currency: "USD", locale: "en-US" }); console.log(user.fullName); // John Doe console.log(user.balance); // $2,649.53 Let’s test out our new proxy. Now we don’t have to rely on calling the right utility function and passing the right data each time we want to get the formatted value. Also, our utility function calls are more maintainable since they’re called only in our traps. We only have to apply the proxy to the user object and we have access to the formatted values right away. Let’s take this a step further. We also have a new, redacted view of user data, where the middle name and last name have been shortened to a single letter, and the email address is obfuscated. If we relied on utility functions exclusively, we would have ended up with a bunch of functions just for formatting the user data and we’d have to import them and call the right one depending on the use case (full or redacted data). We’d also have to make sure we don’t show any sensitive user data on accident. With Proxy objects, we can also prevent access by returning a default value or throwing an error. In the previous example, we’ve been very lenient with returning a value, let’s take a more restrictive approach here by allowing access to only a handful of object properties. /* UTILS */ const getFullName = (firstName, lastName, middleName) => [firstName, middleName, lastName].filter((n) => !!n).join(" "); const getFormattedBalance = (locale, currency, value) => { return new Intl.NumberFormat(locale, { style: "currency", currency }).format(value); }; const getRedactedEmail = (email) => { const [name, ...rest] = email.split("@"); const [service, domain] = rest.join("").split("."); const redactedName = `${name[0]}*****${name[name.length - 1]}`; const redactedDomain = `${service[0]}***${ service[service.length - 1] }.${domain}`; return `${redactedName}@${redactedDomain}`; }; const getRedactedName = (name) => (Boolean(name.length) ? `${name[0]}.` : ""); /* PROXY */ const handleRedactedGet = (obj, prop) => { if (prop === "fullName") { return getFullName( Reflect.get(obj, "firstName"), getRedactedName(Reflect.get(obj, "lastName")), getRedactedName(Reflect.get(obj, "middleName") || "") ); } if (prop === "middleName") { return getRedactedName(Reflect.get(obj, "middleName")); } if (prop === "lastName") { return getRedactedName(Reflect.get(obj, "lastName")); } if (prop === "email") { return getRedactedEmail(Reflect.get(obj, "email")); } if (!(prop in obj)) { console.error(`${prop} doesn't exist in object`, obj); return; } return "Data not available"; }; const createRedactedDataProxy = (user) => { const proxy = new Proxy(user, { get: handleRedactedGet }); return proxy; }; /* USE */ const user = createRedactedDataProxy({ firstName: "John", middleName: "", lastName: "Doe", email: "john.doe@email.com", balance: 2649.53, currency: "USD", locale: "en-US" }); console.log(user.fullName); // John D. console.log(user.email); // j*****e@e***l.com console.log(user.balance); // 'Data not available' If we use a framework like React for rendering our data with UI components and if we use TypeScript for type checking, we can create components that accept only data objects with a specific proxy applied . That way, we can make sure that UI components that render out redacted data cannot access any unredacted values and have data formatting already handled inside the applied proxy. Here is the full demo and source code for this example if you want to have a look and try it out for yourself. Custom Set Handler So far, we’ve worked with get method traps, so let’s have a look at set method traps. In addition to object and prop attributes, Proxy gives us access to the value we want to write, so we can implement custom validation and formatting before saving the value. In this example, we’ll implement a very simple document editor with history and an undo function. You are probably imagining how many variables and functions would it take to manage document history and keep track of active value, but we’ll use a Proxy to further simplify the problem. Let’s start with the set method. We are going to add a side effect . On each value change we’ll add the previous value to the history array and we’ll also automatically keep track of the timestamp when the value has been saved. Let’s add a simple validation and restrict the content to 255 characters. /* PROXY */ const handleSet = (obj, prop, value) => { if (prop === "content" && value.length > 0 && value.length < 255) { const { content, lastUpdated, history = [] } = obj; const historyUpdated = [...history, { content, lastUpdated }]; if (content && lastUpdated) { Reflect.set(obj, "history", historyUpdated); } Reflect.set(obj, prop, value); Reflect.set(obj, "lastUpdated", Date.now()); return true; } console.error( "Content length should not be empty and be less than 255 characters" ); return false; }; const createDocProxy = (doc) => { return new Proxy(doc, { set: handleSet }); }; /* INITIALIZE */ const doc = createDocProxy({ content: "", lastUpdated: Date.now() }); You might have already come up with the solution which involves the history array that we’ve created in the previous step, but let’s utilize the trap and let it manage everything for us. /* PROXY */ const handleGet = (obj, prop) => { if (prop === "undo") { const last = obj.history.pop(); if (!last) { return; } const { content, lastUpdated } = last; Reflect.set(obj, "content", content); Reflect.set(obj, "lastUpdated", lastUpdated); return { content, lastUpdated }; } return Reflect.get(obj, prop); }; const handleSet = (obj, prop, value) => { if (prop === "content" && value.length > 0 && value.length < 255) { const { content, lastUpdated, history = [] } = obj; const historyUpdated = [...history, { content, lastUpdated }]; if (content && lastUpdated) { Reflect.set(obj, "history", historyUpdated); } Reflect.set(obj, prop, value); Reflect.set(obj, "lastUpdated", Date.now()); return true; } console.error( "Content length should not be empty and be less than 255 characters" ); return false; }; const createDocProxy = (doc) => { return new Proxy(doc, { get: handleGet, set: handleSet }); }; /* INITIALIZE */ const doc = createDocProxy({ content: "", lastUpdated: Date.now() }); /* EVENTS */ const input = document.getElementById("data-input"); function save() { const value = input.value; doc.content = value; } function undo() { const previous = doc.undo; if (!previous) { return; } input.value = doc.content; } When accessing the newly created undo property, we are returning the previous document state and updating the current values of the document object. Notice how we’re only reading and writing values, and Proxy manages everything else for us internally. Imagine how much work would it take to keep track and manage history in a more complex use case where a document could be updated from multiple places in the UI. By keeping these functions close to the target object and intercepting the set method, we can freely update the document content from any place we like and not worry about managing those additional states. This also makes the code more maintainable if, for example, we need to add a new document state and manage it accordingly. What About TypeScript? This looks like a nightmare scenario for any TypeScript developer – we’re adding properties that are not available in the target object, we can change the object data type, we’re limiting access to properties… To make things even more complicated, TypeScript’s Proxy definition infers that the returned Proxy object is of the same type as the target object, meaning that TypeScript will throw an error if we try to access any properties that we’ve added in the proxy object. Luckily, there are multiple ways around this problem. Let’s have a look at our user object example where we are redefining the account balance property and adding a full name property. We can add new properties to the original object interface and mark them as optional . But that’s not accurate and it’s not entirely helpful for type checking. Alternatively, we can use casting to override the type when we apply the proxy. We can assume the type is accurate, but converting it to the unknown type makes it difficult to debug as we are enforcing the type. interface User { firstName: string; middleName?: string; lastName: string; email: string; balance: number; currency: string; locale: string; } interface UserProxy extends User { fullName: string; // new property balance: string; // redefined propery } const handleGet = (obj: User, prop: string | symbol) => { /* ... */ }; export const createUserDataProxy = (user: User): UserProxy => { const proxy = new Proxy(user, { get: handleGet, }) as unknown as UserProxy; return proxy; }; And lastly, which seems to be the best option, we can write an adapter function to convert the User type into a UserProxy before passing the object to the Proxy. We only need to cast the redefined properties (balance property in our case) and simply add new properties with default values to the modified object. That way we can ensure type safety with minimal casting. interface User { firstName: string; middleName?: string; lastName: string; email: string; balance: number; currency: string; locale: string; } interface UserProxy extends User { fullName: string; balance: string; } const adapter = (user: User) => { // Redefined properties const balance = user.balance as unknown as string; // New properties const newProps = { fullName: "", }; return { ...user, ...newProps, balance }; }; const handleGet = (obj: UserProxy, prop: string | symbol) => { /* ... */ }; export const createUserDataProxy = (user: User): UserProxy => { const proxy = new Proxy(adapter(user), { get: handleGet, }); return proxy; }; If you want to completely avoid casting types , I would recommend instead of redefining existing property types, to add new properties which have the correct type. In our user example, we can add a new property balanceFormatted (which is a string) instead of the existing balance property (which is a number). interface User { firstName: string; middleName?: string; lastName: string; email: string; balance: number; currency: string; locale: string; } interface UserProxy extends User { fullName: string; balanceFormatted: string; // New property, no longer redefined } const adapter = (user: User) => { // New properties const newProps = { fullName: "", balanceFormatted: "" }; return { ...user, ...newProps }; }; const handleGet = (obj: UserProxy, prop: string | symbol) => { /* ... */ }; export const createUserDataProxy = (user: User): UserProxy => { const proxy = new Proxy(adapter(user), { get: handleGet, }); return proxy; }; Applying Proxy Objects to Arrays Array is a special type of an object and we can create proxy objects for them, too. Let’s create a proxy for an array that will take up to 10 numbers (validation with a set trap), we’ll allow accessing a value on each index and we’ll add a property average that will return the average value of all numbers in the array (new property on a get trap). /* UTILS */ const getAverageScore = (score) => score.length ? score.reduce((acc, point) => acc + point) / score.length : 0; /* PROXY */ const handleSet = (obj, prop, value) => { const isNumber = !isNaN(parseInt(prop)); if (isNumber) { const index = parseInt(prop); console.log(index); if (index >= 10) { throw new RangeError("Array limit reached"); } Reflect.set(obj, prop, value); } Reflect.set(obj, prop, value); return true; }; const handleGet = (obj, prop) => { if (prop === "average") { return getAverageScore(obj); } if (prop in obj) { return Reflect.get(obj, prop); } }; const createArrayProxy = (arr) => { const proxy = new Proxy(arr, { set: handleSet, get: handleGet }); return proxy; }; /* INIT */ let arr = createArrayProxy([]); Instead of a gracious fallback, we’ll throw an error if we attempt to have more than 10 numbers in the array. We can then use try-catch to handle it. String Index Values in Arrays In this final example, we’ll extend our array functionality to accept string index values. We’ll use the string index value to filter the array and return the final value. We can still use numerical index values to access individual array elements. We’ll have a list of malls that offer various services, and we’ll use string index value to filter malls to include only elements that have the specified service. /* SAMPLE DATA */ const DATA = [ { id: "1", name: "Super mega mall", address: "Some address 1", city: "Super Mega City", services: ["restaurant", "caffee", "shops", "cinema", "arcade"] }, { id: "2", name: "Super cool mall", address: "Some address 2", city: "Super Cool City", services: ["caffee", "shops", "cinema", "arcade"] }, { id: "3", name: "Super medium mall", address: "Some address 3", city: "Super Medium City", services: ["caffee", "shops", "arcade"] }, { id: "4", name: "Super small mall", address: "Some address 4", city: "Small Town", services: ["caffee", "shops"] }, { id: "5", name: "Just shops mall", address: "Some address 5", city: "Really Small Town", services: ["shops"] }, { id: "6", name: "Party town arcade", address: "Some address 6", city: "Some Other Town", services: ["caffee", "restaurants", "arcade"] } ]; const FILTERS = [ "all", "restaurant", "caffee", "shops", "cinema", "arcade" ]; /* PROXY */ const isService = (prop) => FILTERS.includes(prop.toString()); const handleGet = (obj, prop) => { if (prop in obj) { return Reflect.get(obj, prop); } if (prop === "all") { return obj; } if (isService(prop)) { return obj.filter(({ services }) => services.includes(prop)); } return undefined; }; const createStoresProxy = (stores) => { const proxy = new Proxy(stores, { get: handleGet }); return proxy; }; /* INIT */ const stores = createStoresProxy(DATA); Conclusion When dealing with utility functions that are closely related to data objects or arrays, we can Create A Proxy that utilises them and change how data is formatted, validated, read, written, etc. Using proxies in this way reduces the amount of utility function imports which makes them more maintainable while keeping the testability and single-responsibility principle of the original utility function. When combined with TypeScript, we can consume data that has a specific proxy attached to it which, in turn, allows for better developer experience, and a cleaner and more maintainable code. In terms of performance, Proxy objects are the least performant out of other possible approaches, so developers shouldn’t rely on them for parts of the code where performance is the priority. JavaScript Proxy objects shouldn’t be considered a replacement for utility functions and should be treated as an enhancement to our utility functions, and used in specific use cases like formatting, validation, adding side-effects to read/write, etc. Adrian Bece Adrian is a senior React developer at Q with almost a decade of experience in frontend development. He has won several hackathons and is a regular contributor to Smashing Magazine. He collects music CDs and LPs, plays the guitar, composes and records music, reads sci-fi books, and adores "Calvin and Hobbes" comics. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 4, 2023 — 17 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 4, 2023 — 17 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear ex [truncated] ======================================================================== # Enterprise Software Testing: The Key to Smarter Growth - Tech Consulting and Software Engineering URL: https://q.agency/blog/enterprise-software-testing/ What is enterprise software testing, and why it can be the key to a more reliable digital transformation? Learn more about it in our article! Enterprise Software Testing: The Key to Smarter Growth | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Enterprise Software Testing: The Key to Smarter Growth Enterprise Software Testing: The Key to Smarter Growth April 28, 2025 — 7 min read Enterprise software testing is becoming the foundation of success for any serious software company. Enterprise applications, such as enterprise resource planning (ERP), customer relationship management (CRM), human resources management (HRM) and other business systems, support key processes, connect departments and enable the daily functioning of large organisations. For these complex applications to carry out their objectives, you need to have an established and well-structured software testing process. Only this way can these apps provide full service to their end users and ensure full reliability and stability. Let’s learn out more about this topic and dig into what the challenges but also best practices are when it comes to testing enterprise software. What Is Enterprise Software Testing Exactly? Enterprise software testing includes comprehensive testing of large software systems with the aim of checking functionality, security, performance and user satisfaction. In contrast to the testing of smaller applications, these are systems that connect multiple departments, often operate globally and must meet strict regulatory requirements. Also, any mistake can cause serious financial losses, business interruptions or damage to the company’s reputation. In our work, we often see how important it is that all parts of the enterprise system are flawlessly connected and tested. Because one failure can have large-scale, chain consequences. Key Types of Testing in Enterprise Environments 1) Functional testing. This testing type checks whether all functionalities work according to the specifications of the app in question. So before the product gets pushed into production, functional testing checks the system features, and makes sure they all work as they should. Within functional testing, and talking about enterprise environment, there are two main methods: unit and integration testing. Unit testing. Method that has the goal to test code at the unit level, which makes sure that the overall code design is higher quality and more modular. Integration testing. Tests the mutual cooperation of various modules and external systems. We often work on projects where ERP must be connected to legacy systems or cloud services. 1) Non-functional testing. Unlike functional testing, which checks the system’s functional aspects, non-functional testing checks system characteristics such as performance, security, usability, and scalability. In enterprise software testing, the most common methods are performance, security, and usability testing. Performance testing. This testing method tests software under a certain type of load, such as number of users or, for example, high data amount, and so on. In other words, it tests the software’s performance based on 4 key aspects: speed, scalability, response, and stability. Security testing. Is your software vulnerable or susceptible to potential attacks or unauthorised access? Does it check all the boxes when it comes to protecting sensitive data, for example, those that are related to GDPR? In an enterprise environment, security is not an option, but an obligation. Usability testing. This testing type has the objective to check and evaluate what the usability score is and how intuitive your software is. Different Methodologies & Approaches Manual testing and automated testing are the two fundamental methods. Manual testing is indispensable for research testing and evaluation of user experience. On the other hand, automated testing is crucial for regression, load and performance testing to make sure speed and repeatability are on point. However, what keeps proving to be the best method is combining both of these two. Automated testing saves you time on repetitive tasks, and is in general more exact, but manual testing can often discover minor issues that automation might miss. Agile and DevOps as two complementary practices that enable continuous testing. And this means that the process, in this case the enterprise software testing process , is present throughout the entire development cycle. Since we’re talking about enterprise software, this also involves complex code that requires frequent changes and updates. That’s why, by applying Agile and DevOps methodologies, we can run tests automatically after making changes in code, which reduces the risk of unexpected errors in later stages. We can’t go without mentioning TDD , a.k.a. test-driven development. This process code has the task of writing tests before code, which ultimately leads to an increase in product quality and delivery. TDD has also helped us detect errors on time, better said, even before the ‘time was up’. And this has led to the prevention of higher costs when fixing the code — you guessed it — in the later phase of the project. Challenges with Enterprise Software Testing Complex code integration. Enterprise systems often integrate multiple applications and external services. Any change can have a real domino effect on the entire ecosystem. One of the major challenges is to make sure that updates in code in an enterprise system don’t spill over and affect other apps that make part of it. Security & compliance. It’s necessary to test data protection and compliance with regulations (GDPR, HIPAA, etc.). Does the software that you’re testing cover all potential vulnerabilities, privacy-related controls without exposing user data of your users? This is something to always bear in mind when working on such large-scale projects. Scalability. Systems must support thousands of users and large amounts of data. It’s natural that enterprise software products grow, but that also brings scalability challenges. Something that constantly needs to be evaluated is peak conditions simulation, without performance backfiring. Diversity of environments. Apps must work on various devices, operating systems, and browsers, which requires more effort in testing and increases its complexity. There’s a myriad of different environments out there, and it’s necessary to test on many different combinations of devices and browsers. Test cycle management. As with everything, time is crucial. Testers often face tight deadlines during their test cycle, and poor time and resource management can bring faulty and incomplete processes. The result? Potentially major issues later on. Enterprise Software Testing – Best Practices Involving the QA Team Right Away. Testers should be involved early in the planning and design phase. Why? To be able to identify potential problems before they become expensive to fix. In reality, if done right, this means less surprises later. Collaboration among teams. QA Engineers, developers, and business teams must always work closely and in sync to ensure that software meets real business needs. Comprehensive test planning. A detailed test plan must cover all functional and non-functional requirements, including extreme — edge cases. Continuous integration/continuous deployment (CI/CD). Including testing into the CI/CD pipeline enables faster detection and correction of errors before production. Automation. Focusing on automation of regression, performance and repetitive tests for faster and more reliable delivery cycles? That’s the way to go. Real-world scenario testing. Simulating real user scenarios can often detect hidden bugs that are often not visible and undetectable in controlled conditions. Conclusion When talking about enterprise software testing, it is, without a doubt, a strategic investment in the stability and security, and growth of your business. In this article, we’ve shown how important it is to implement best practices, use advanced automation tools and ensure continuous collaboration of everyone involved in your project. Especially when it comes to large systems like enterprise apps. Your project needs to be reliable, secure, and scalable enterprise apps that will support your most important business processes. Finally, well-tested enterprise software is the basis of your business success. That’s why we’re here to help you build and test your enterprise app. If you have a business idea or need a reliable business partner for enterprise software, feel free to contact us and schedule a consultation with us. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 28, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 28, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Every client matters - Tech Consulting and Software Engineering URL: https://q.agency/blog/every-client-matters/ Learn why strong client relationships matter and discover practical ways to build trust, improve communication, and retain clients. Every client matters | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Every client matters Every client matters February 13, 2019 — 2 min read In today’s IT market the competition has never been tougher, and every client counts. Be it a current or a potential one, it has to be considered equally valuable and important. No matter how often contact with the client happens, it is highly likely that it doesn’t happen often enough. According to research, companies are investing much more money in winning new clients than in maintaining a good relationship with the existing ones. In today’s digital world, communication has never been easier, but one wrong step in relationships with clients can be very expensive for the company’s reputation on the market as well as for the budget. Bad communication is something that has to be avoided if you want to survive and thrive on the market. Therefore, smart and strong communication is crucial to keep the channels open. After the initial sale and getting together with the new client, it is most important to forge a long-lasting relationship. Nowadays, there are many options in which you can maintain and improve a relationship. Here are some of them: Visiting clients at their oice from time to time because nothing beats face to face communication. Being in touch by phone and email because that is an eective way of accomplishing your communication goals. Being active on social media has to be part of every marketing strategy. It helps you connect with your customers/clients, increase awareness about your brand, and boosts your leads and sales. Sending newsletters to inform clients about your recent business activities. Organizing client events, such as seminars, workshops, parties, team buildings etc. Overall, it is important to complete tasks/projects by due-date and in a high-quality way. One other important thing in making a good connection with the client is getting to know a person with whom you are in contact better on a personal level so you can always ask about their hobbies or families to add a personal touch. A good relationship with clients doesn’t come overnight. It has to be built step by step, creating a stable and durable connection. Clients are like plants and you have to be a good gardener and keep watering them if you want to see the relationships grow. Adrian Keindl Adrian is mag.oec. who combines his economical profession with his love of tech and the processes involved in building high-end digital solutions. He is a multi-lingual expert and the one who always has a compliment in his sleeve, accompanied by a business offer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 13, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 13, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Evolve and Involve in Mentorship - Tech Consulting and Software Engineering URL: https://q.agency/blog/evolve-and-involve-in-mentorship/ New Q's business analysis mentorship program. Find out how we prepared, all about the commitment factor, and why it was a rollercoaster. Evolve and Involve in Mentorship | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Evolve and Involve in Mentorship Evolve and Involve in Mentorship April 20, 2023 — 5 min read Last year we started an internal business analysis mentorship program . Find out how we prepared, all about the commitment factor, and why it was a rollercoaster. What started as an experiment turned out to be an extensive program where both the mentor and mentee learn from each other . Milestones and activities during the mentorship program: the whole experience took 3 months 4 participants, 2 mentees + 2 mentors established resources and competency models were used daily standups and constant engagement hands-on experience in practice . I had the privilege of working with Iva Bubicic and Mateja Baric with their dedication to work and willingness to learn as mentees. On the mentor side, Jelena Frlan and I were preparing mentorship materials and hoping not to make too many mistakes along the way, as both of us were in that role for the first time. A combination of both , mentees and mentors, turned out to be an interesting and well-working journey. Body of the mentorship program The goal of the mentorship program was the onboarding and adaptation of junior business analysts to gain the knowledge and skills needed for independent work . We had a lot of back and forth in brainstorming with everyone engaged in thinking of different situations , competencies , and techniques needed in everyday work. Initial activities revolved around research and getting to know each other. The idea was to get to know the background of our mentees through self-assessment tasks and give them time to explore Q’s knowledge base , both for business analysis and the overall organization. Personal notebook – Initial mentorship activities As a result, based on theoretical assumptions, we could prepare conceptual assignments to work with mentees in practice. One of the mentorship treasures was Jelena Frlan’s preparation of a business analyst framework that combines Q’s internal business analyst competency model and official IIBA materials. “This way tracking progress , techniques, and skills needed for business analysts is much easier, user-friendly and most importantly, measurable .“ An example from the framework: development of documentation writing skills using user flow diagrams as desired behavior applying process modeling and applicable tools as references. A segment of Q’s internal BA framework P.S. Warm recommendation for any business analyst out there to take IIBA’s competency assessment to find their proficiency level based on different knowledge areas and techniques defined by the IIBA BABOK guide . Assessment and materials are available to IIBA members only. Little less action, little more conversation During a retrospective session, on both mentee’s and the mentor’s side, a key takeaway was the moment of hearing and listening . Mentees recognized and appreciated when their voices were heard and, based on their feedback, changes in mentorship were applied . From personal experience, one of those situations was when the weekly activities assigned rapidly grew with deadlines coming closer. By being honest and with mutual openness, we talked through it and agreed to use a centralized activities tracker , displayed below. Why was the activity tracker good in the long term? In short — because of awareness and mutual understanding of agreed points. Cross-functional and overlapping tasks are normal in everyday work but tracking priorities and expectations help in better delivery for individuals and keep everyone on the same page . Activities tracker The challenge of clear and timely communication Even though the whole experience was successful and overall very positive, we did have tricky situations where we needed to confront each other and discuss some not-so-nice things. With time and constant daily communication, our mentees started shadowing each mentor on projects with real-life scenarios. That has led us to more and more concrete tasks over time. The idea behind one of the tasks was that our mentees worked together on different user journeys and prepared supporting user diagrams for those. Where we failed as mentors were giving the exact same inputs to both mentees. Oh, the curse of team tasks! ? While being part of a team task it’s crucial to ask questions on both sides and interact to make perception work in the right direction. “It shows us how perception really is everything. To one person maybe it seems everything is said and the other side knows the next steps but on the other side questions and insecurity may arise.” What did we want to achieve? Raising attention on situations where: few inputs are given and you need to provide delivery relying on team members and the value of collective responsibility is core concentrate on quality over quantity . Our main challenges as mentors revolved around: interpersonal communication with too many assumptions made lack of self-awareness regarding our approach, ideas, and comments in certain situations toward our mentees. It’s crucial to find a way to articulate the message . While doing so, it is always wise to double-check if the other side understood the message and that you have a mutual understanding of the situation. Consultancy is the key. Learning loop on repeat After 3 months of close collaboration, we determined that our dear mentees were ready to “go live” . Both of the mentees validated our decision by doing an extremely good job on the projects assigned, growing, and applying methods from the mentorship program. Overall, in Q, we will continue the learning loop — expand the mentorship program and use the mentorship outline as a basis. If feasible, I would strongly encourage you to apply some techniques while onboarding new colleagues. Any questions about the mentorship program? Feel free to contact us directly and share your thoughts. Maja Kostic Maja is a certified product ownership analyst (IIBA-CPOA) with multi-year experience in various industries, on both client and vendor side. Constant problem solving is a persistent incentive for her motivation, which she combines with a willingness to learn, collaborate and share knowledge. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 20, 2023 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 20, 2023 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Exhibiting on WorkIn’ Science - Tech Consulting and Software Engineering URL: https://q.agency/blog/exhibiting-on-workin-science/ Q exhibited at WorkIn’ Science, connecting with students at the Faculty of Science and showcasing career, internship, and employment opportunities in the tech industry. Exhibiting on WorkIn’ Science | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Exhibiting on WorkIn’ Science Exhibiting on WorkIn’ Science November 12, 2019 — 1 min read WorkIn ‘Science — WISe — that is, a career day at the Faculty of Science, organized by students and sta of the Faculty, brings together and represents companies of dierent fields of interest. The aim of the event is to inform and familiarize students of all departments with the labor market and employment opportunities after and during their studies. WISe will bring together companies that hire people from one or more departments of the PMF, introduce students to potential employers, as well as other opportunities they are not familiar with during their studies. WISe provided us with the opportunity to directly contact and communicate with future job applicants, as well as to create new and expand existing models of student collaboration through student practices, which consequently increases the ability to select the best and most motivated candidates. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 12, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 12, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Exploratory Testing in Requirement Analysis - Tech Consulting and Software Engineering URL: https://q.agency/blog/exploratory-testing-in-requirement-analysis/ Exploratory testing in requirement analysis is a ‘thinking’ activity. You’ll learn how to explore requirements and why it’s important. Exploratory Testing in Requirement Analysis | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Exploratory Testing in Requirement Analysis Exploratory Testing in Requirement Analysis June 20, 2022 — 8 min read When you think about exploratory testing, do you imagine a tester clicking through the app or a tester analyzing requirements? I bet the answer is a tester clicking through the app! Both answers are correct, but in this blog post, you’ll read more about exploratory testing in requirement analysis. Don’t worry if you’re not a tester, anyone included in the requirement analysis will benefit from this blog. Requirements can be explored in a requirement discussion or later when requirements are already defined and written. Exploring requirements is actually a ‘ thinking’ activity . In this blog, you’ll learn how to explore requirements and why it’s important. But first – what is exploratory testing? This question deserves (at least) its own blog post! However, take a look at this simple example to understand what exploratory testing is. Let’s say that you are looking into a requirement like this: ‘As a user, I want to be able to log in with my username and password.’ If you enter your credentials in a username and password field and click on the Login button, you are not exploring. But, if you click on the Login button without entering credentials, you are exploring. Furthermore, you can check what happens when you click multiple times on the Login button after entering valid credentials or observe what happens when you enter an invalid email or password. In short, everything you test that is not specified in the requirements or test cases can be considered exploratory testing. If you want to know more about exploratory testing, I recommend an excellent book that describes exploratory testing in detail – Explore it! by Elisabeth Hendrickson . This book offers great examples and tips for exploratory testing. And how does exploratory testing fit into the requirement analysis? Let’s find out! Exploring requirements during requirement discussion I would say that this is the perfect start for testing. Well yeah, you don’t have a product you can test, but you can save a lot of time (and nerves) if your testing starts here. During the requirement discussion , the main focus is to define what a system should do. First, so-called happy paths are discussed. After defining and understanding what those happy paths are, other scenarios should be discussed – and that is the moment where exploratory testing should start. What can go wrong? Each happy path is likely to have scenarios that can go wrong. Let’s stick to the mentioned login example – what will happen if the user enters invalid credentials? If there are no warning messages saying that the username or password is incorrect, the user can be confused. Raise a question about scenarios that could go wrong following the defined happy paths. What should always work? This is a happy-path question, but it’ll help you understand where to put a great effort into breaking that thing. Ask stakeholders to define the most important use case(s). For example, imagine that your team is building a webshop and you’re discussing a payment flow in a webshop – one of the most important use cases is to always show correct prices and a correct total price. You can discuss with stakeholders anything you think will affect the correct prices (reducing the number of the same products in the chart, removing products, discounts, promotion codes) What should never happen? Discuss with stakeholders what should never happen . For example, products from the wishlist should never disappear. Try to cover scenarios in which products may disappear from the wishlist and how to handle those scenarios. One of those scenarios is that the product is out of stock. The end-user wants to see all products he ever saved on the wishlist, although the product is out of stock. The product can be grayed out, or the ‘out of stock’ warning may appear under the product, but the product should remain on the wishlist, and the user should be informed that the product is out of stock. Are there any variables affecting other functionalities? This question is very important because it helps prevent defects in multiple functionalities . Let’s continue with the webshop example – one of the requirements is ‘As a seller, I want to be able to remove my products’. Now think about what functionalities depend on products: chart – should the product be removed from the chart? Do I need to notify a buyer about the removed product? Should the product be disabled and greyed out or completely removed? product list – when the seller removes his product, can the buyer see his product in the product list? search – can the buyer find the removed product by search option? filter – can the buyer find the removed product by filter option? payment – what should happen if the seller removes the product at the moment when the buyer is paying for the product? bought items – if the buyer bought the product before the product was removed, can the buyer still see the product in his bought items list after the product is removed? Once you start doing exploratory testing in the requirement analysis following these questions, you’ll reduce many discussions that occur during the development – doesn’t it sound perfect? Exploratory testing in defined requirements I’m sure that you already know that any defined and written requirement can be changed. So don’t take for granted defined requirements, analyze them and raise your concerns. When you understand what the requirements ask for, you can analyze them with the questions mentioned above: What can go wrong? What should always work? What should never happen? Are there any variables affecting other functionalities? And questions not mentioned above: Does the end-user need the functionality as described? Is it going to be too complicated for the end-user? Are there any scenarios that are not described within the requirements? As in the previous examples, these questions will lead you to other questions. And sometimes, defined requirements won’t give you answers. However, stakeholders will. You can forward your questions or concerns to a business analyst, project manager, project owner, or your clients – this depends on the organization within the project you work on. Just make sure to contact a person responsible for defining business logic and/or requirements. If you have any suggestions on how to handle your questions, don’t hesitate to raise them with your questions – moreover, it’ll help stakeholders to make a decision, and your previous experience will probably generate some great ideas. Benefits of Exploratory testing in requirement analysis Exploratory testing in the requirement analysis doesn’t make sense if there are no benefits to it, right? Great benefits can be brought to both product quality and teamwork. Let’s start with some benefits of exploratory testing during requirement discussion, where questions are raised before development starts: The time for discussing requirements is saved – you’re already brainstorming and discussing requirements with stakeholders so it’s faster and easier to discuss any new questions at this moment than discussing them later and waiting for answers Preventing bugs – while exploring requirements, you’ll detect questions and scenarios that probably wouldn’t be detected without exploring requirements, which means that potential bugs are prevented Reducing the number of change requests – anything discussed in the requirement discussion will not be discussed later, causing change requests. But not just that, it’ll save unnecessary work that could be made in the development Better planning – clear requirements that cover most of the scenarios lead to more accurate estimation and prioritization, which leads to better planning Better communication – anything discussed in the early phase will prevent misunderstandings between the client and the team or between team members The time is saved – everything stated 1 – 5 is saving the time: time is not spent to discuss requirements again or to discuss change requests or misunderstandings, unnecessary work is avoided, the work is better planned The money is saved – time is money. Now read everything 1 – 6 again If requirements are already defined, your team still can benefit from exploring them: Better Quality – discussing missed scenarios or something that can be done better than it is, and implementing it, provides better product quality Better UX – end-users probably won’t praise your dedication and great work, but be sure that you will prevent user complaints caused by poor user experience. Besides that, satisfied users are likely to bring to your product more users and to continue to use your product More satisfied clients – clients will recognize team dedication to deliver a high-quality product, and they will appreciate it Conclusion Although exploratory testing is about simultaneously learning, designing, and executing tests, exploratory testing can be done in requirement analysis. You need to think outside the box and let your results bring great benefits ! Jelena Scevic Jelena is a QA Engineer that raises software quality with her skills and various testing techniques, but her favorite skill is critical thinking. When she’s not testing, she’s probably reading crime books or hanging with her family and friends. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 20, 2022 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 20, 2022 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Exploring OutSystems: How It Stacks Up Against Custom Development - Tech Consulting and Software Engineering URL: https://q.agency/blog/exploring-outsystems-how-it-stacks-up-against-custom-development/ A deep dive into working with OutSystems, ideal project use cases, and a cost comparison with traditional custom software development. Exploring OutSystems: How It Stacks Up Against Custom Development | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Exploring OutSystems: How It Stacks Up Against Custom Development Exploring OutSystems: How It Stacks Up Against Custom Development November 27, 2024 — 15 min read A deep dive into my OutSystems experience, ideal project use cases, and a cost comparison with traditional custom software development. Low-code platforms like OutSystems are transforming the way we build software, making it faster and more accessible for businesses to bring ideas to life. In this blog post, I’ll share my firsthand experience using OutSystems for a proof-of-concept (PoC) project, explore the types of projects that are best suited for low-code development, and compare the costs and benefits of using OutSystems versus traditional custom development. Whether you’re considering OutSystems for your next project or just curious about low-code, this post will provide valuable insights. Understanding Low-Code Development Low-code development is a modern approach that simplifies app creation by using visual interfaces and pre-configured components, reducing the need for extensive hand coding. This method allows businesses to create applications quickly, making development accessible to technical and non-technical users alike. By leveraging drag-and-drop tools and automation, low-code platforms enable rapid prototyping and deployment, helping teams test ideas and gather feedback more efficiently in competitive markets. Platforms like OutSystems, Xano , and Make.com empower teams to build functional applications with backend logic, integrations, and user-friendly interfaces . This flexibility is ideal for organizations looking to streamline workflows, build MVPs, or scale solutions quickly. However, as projects grow, low-code solutions may face limitations in customization and scalability. It’s essential to assess long-term goals and consult technical experts to ensure low-code aligns with your strategic objectives. Low-code addresses many of the challenges in software development , such as long development cycles, high costs, and the shortage of skilled developers. By automating repetitive processes and simplifying complex coding, low-code empowers organizations to deliver digital solutions more quickly and efficiently, particularly in prototyping, building internal business applications, or modernizing legacy systems. In essence, low-code bridges the gap between speed and functionality, offering a balanced solution for businesses aiming to accelerate digital transformation while managing resource constraints. Low-Code vs Traditional Coding Platforms like Make.com, Xano, and OutSystems enable fast app creation through minimal coding, which is particularly useful for prototyping MVPs and testing market demand . They support integration and automation with popular tools, making workflows more efficient. However, low-code may have limitations for complex, long-term applications, so consulting experts is recommended for more advanced needs. Custom development provides complete control, flexibility, and scalability, allowing organizations to build solutions that meet specific, often complex requirements. This approach is especially valuable for legacy system integration or high-traffic, complex applications, though it demands more time, resources, and expertise. When deciding between these options, organizations should weigh factors like time-to-market, budget, technical expertise, and scalability. Low-code platforms can facilitate rapid deployment and validation for simpler projects, while custom development may yield higher ROI and independence for more complex applications. As businesses grow, no-code costs may increase due to usage-based pricing models. Monitoring usage, optimizing integrations, and exploring custom development for high-volume needs can help control expenses. Ultimately, both low-code and custom software development offer unique benefits . By evaluating business needs, technical requirements, and long-term goals, organizations can choose a solution that balances efficiency, scalability, and cost-effectiveness. Comparing Low-Code with Traditional Coding The debate between low-code and traditional coding revolves around speed, flexibility, cost, and scalability. Here’s a breakdown of how they compare: 1) Speed of Development : Low-code platforms like OutSystems significantly shorten development time. Their visual tools and pre-built components allow teams to deliver solutions in weeks instead of months, while traditional coding typically requires more extensive setup and testing. 2) Flexibility and Customization : Traditional coding provides maximum flexibility, enabling highly customized solutions. Low-code, while flexible to a degree, may be limited by platform constraints for highly specialized needs. However, platforms like OutSystems allow custom code integration, balancing speed with customization. 3) Cost Efficiency : Low-code can be cost-effective for smaller projects or PoCs by reducing the need for large development teams. Traditional development, though often costlier due to skilled labor and longer timelines, may be essential for high-performance, custom projects. 4) Scalability : Both approaches can scale, but low-code is typically better suited for initial rapid scaling. As complexity increases, traditional coding may offer more control over performance optimizations. OutSystems addresses scalability by supporting both small and large-scale deployments with cloud integration. 5) Maintenance and Updates : Low-code simplifies maintenance with visual interfaces for updates, while traditional coding may require more manual efforts. However, traditional coding provides more granular control over updates In summary, low-code solutions like OutSystems are well-suited for rapid prototyping and simpler applications, while traditional coding remains indispensable for complex, high-performance projects. What is OutSystems? OutSystems is a prominent low-code platform that specializes in creating enterprise-grade applications with speed and scalability . Founded in 2001, the platform has grown to be one of the most comprehensive low-code solutions, offering a robust set of tools for developing web and mobile applications. OutSystems stands out by combining visual development with the flexibility to incorporate custom code when needed, enabling a balance between rapid development and sophisticated customization. The platform provides an integrated environment for the entire software development lifecycle , including UI design, backend integration, deployment, and maintenance. It offers built-in features for user authentication, role-based access control, API integrations, and analytics. These capabilities make it suitable for a variety of use cases, from internal business tools and customer-facing apps to complex enterprise systems requiring integration with existing software. OutSystems is designed to address the needs of professional developers while also empowering less technical users . It supports continuous delivery with automated deployment pipelines, making it easy to update and maintain applications. Additionally, the platform’s scalability allows businesses to start small and grow their applications over time, adapting to changing business requirements. The True Cost of Custom Software Development: Key Considerations In the fast-paced digital landscape, software is vital for driving innovation, yet the costs of creating, buying, or customizing software are often intricate. When deciding whether to develop software in-house or use existing solutions, it’s crucial to consider the total cost of ownership (TCO), which encompasses more than just upfront fees. Key Costs of Software Development TCO includes direct and indirect costs: licensing fees, development and deployment expenses, training, maintenance, support, infrastructure, and integration. Often, opportunity costs arise from delayed time-to-market, impacting revenue potential. Strategic factors like scalability, return on investment (ROI), and competitive advantage also play into the long-term value of a solution. Buy, Customize, or Build? Each option comes with its own trade-offs. COTS solutions may have lower initial costs but can require high fees for licensing, customizations, and IT support , especially as business needs evolve. Customizing COTS software is often expensive and complex, especially when integrating with existing systems. If customization exceeds 20% of the system, building a solution might be more cost-effective. Traditional custom development provides maximum flexibility but is typically costly and time-consuming, often requiring specialized skills in various languages and frameworks. Such projects frequently go over budget and are prone to delays. Low-Code as a Cost-Effective Alternative OutSystems and similar low-code platforms offer a streamlined, cost-effective solution for custom software development . They accelerate project timelines by up to 60%, reduce staffing needs, and decrease maintenance costs through automated governance and real-time monitoring. By offering pre-built connectors and reducing technical debt, low-code platforms also simplify integration and infrastructure management, enhancing the ROI and strategic value of applications. Long-Term Value Low-code platforms, especially OutSystems, enable businesses to control their digital roadmap, improve application quality, and scale with ease. By reducing the overall lifetime cost by 10-40%, low-code solutions allow companies to develop robust, scalable software that supports growth and adaptability over time. Considering TCO and comparing different development options allows IT leaders to make strategic, informed decisions that support digital transformation and deliver sustained value. Ideal Applications for Low-Code Development Platforms Low-code platforms like OutSystems are ideal for developing applications that require quick deployment, ease of use, and integration with existing systems, without the need for extensive custom coding. Applications that benefit most from low-code include internal business tools, such as HR management, CRM, and inventory tracking systems, where rapid prototyping and deployment are priorities. These platforms are also well-suited for customer-facing portals and mobile apps with standard functionalities, such as booking systems, feedback forms, or appointment schedulers. Additionally, low-code is a strong choice for applications that need to integrate with enterprise systems (e.g., SAP, Salesforce) or automate workflows across departments. OutSystems enables businesses to build scalable, secure apps with minimal development time, making it an excellent option for solutions requiring fast time-to-market and adaptable workflows. Comparing the Total Cost of Ownership for a Custom-Developed Booking System App vs. OutSystems When planning to build a booking system app, the choice between custom development and a low-code platform like OutSystems can significantly impact both cost and time. The estimates below are based on typical rates found in North America and Western Europe . Let’s break down the total cost of ownership (TCO) for each approach to give you a clearer picture of the expenses involved in developing a booking app using traditional custom coding versus OutSystems. Custom Development TCO Estimate For a custom-built booking system, you’ll need to budget for initial development, infrastructure, maintenance, and ongoing support. Here’s a general estimate: Development Costs : Frontend & Backend Development: €46,000–€92,000, depending on app complexity. UI/UX Design: €9,000–€18,000 to create a user-friendly interface. QA and Testing: €4,500–€14,000 to ensure a bug-free user experience. Total Initial Development : €59,500–€124,000 Infrastructure & Hosting : Cloud Servers, Databases, and Hosting: Around €4,500 annually for a mid-sized app. Maintenance & Support : Bug Fixes and Minor Updates: €9,000–€18,000 per year. Support & Troubleshooting: €4,500–€9,000 per year. Total Maintenance (annually) : €13,500–€27,000 Combining these factors, the TCO for the First 3 Years includes: Initial Development : €59,500–€124,000 3-Year Infrastructure : €13,500 3-Year Maintenance & Support : €40,500–€81,000 Total TCO (3 Years) : €113,500–€218,500 OutSystems Development TCO Estimate OutSystems simplifies development with pre-built templates and modules, often lowering initial development costs and streamlining ongoing maintenance. Here’s how the costs generally compare: Development Costs : Platform Subscription (starting at): €34,000 per year. Customization & Additional Development: €9,000–€23,000 for any custom features or integrations outside of built-in modules. Total Development Cost (Year 1) : €43,000–€57,000 Infrastructure & Hosting : Typically included in the OutSystems platform, but for larger deployments, additional hosting might cost around €4,500 per year. Maintenance & Support: Platform Support & Maintenance: Included in the OutSystems subscription. Minor Customizations or Adjustments: Estimated €4,500–€9,000 per year. Total Maintenance (annually): €4,500–€9,000 With OutSystems, the TCO for the First 3 Years includes: Initial Development & Subscription : €43,000–€57,000 Platform Subscription (2 additional years) : €68,000 Customization Maintenance : €9,000–€18,000 Total TCO (3 Years) : €120,000–€143,000 Comparing Costs: Custom Development vs. OutSystems Here’s a summarized cost comparison: Cost comparison summary Key Takeaways Using OutSystems for a booking system app can reduce TCO in most scenarios, particularly for businesses that prioritize speed-to-market and need a standardized solution. Custom development, on the other hand, offers greater control and flexibility, though generally at a higher initial and ongoing cost. Understanding these factors can help make the right choice based on specific requirements, budget, and timeline. My Impressions While Working with OutSystems My experience working on a proof-of-concept (PoC) project in OutSystems highlighted both the strengths and challenges of the platform. The goal was to build an app resembling a ChatGPT interface. Starting with OutSystems, I worked through a variety of tutorials and training paths designed for different needs: app development, certification, team training, and more. The training materials were thorough and included practical tasks, making them easy to follow. However, they could be overwhelming at times, and it took a while for the concepts to fully sink in. OutSystems’ Service Studio — the development environment — offers a user-friendly interface with a list of applications and a marketplace called Forge , where users can download existing applications or modules and customize them. Forge modules can be reused across projects, allowing for a modular, microservices-based approach. For instance, you can develop a user authentication module and reuse it across applications needing similar functionality. Service Studio – user’s personal development environment Service Studio – Forge When building a new application, OutSystems provides the choice of starting from scratch or using a pre-built template. Available templates cover various use cases, such as banking, order management, product catalog, and CRM, for both mobile and desktop. These templates come with a functional, responsive UI, requiring only backend logic. When choosing to build an app from scratch there are still few options to choose from, users can choose between reactive web app, tablet app or phone app, and between traditional web, external web portal or service where users can create centralized and reusable logic and data that can be shared between apps. Service Studio – creating new app Service Studio – selecting app type Service Studio – creating app from ready made app template I chose to build a traditional reactive web app from scratch, which aligned with my professional background. I quickly learned that template selection is crucial: initially, I picked the wrong template, which made it challenging to align the UI with my design vision. Adjusting the layout proved more complex than anticipated, so I restarted the project with a more suitable template. This change significantly streamlined the development process. Different layouts and custom UI components Built-in UI components that are ready to use by drag and drop Chat app layout As this was a PoC aimed at learning OutSystems, there was a learning curve in understanding the platform’s component logic. Often, I found myself comparing it to React, a framework I’ve used extensively. Once familiar, adding screens, building layouts, and configuring components became fairly straightforward. The drag-and-drop interface made it easy to add elements and set up basic logic. OutSystems also allows creating reusable widgets , similar to React components, for elements that follow a consistent UI pattern. Building the UI started feeling like assembling Lego pieces—intuitive, enjoyable, and efficient. For custom styles, the stylesheet editor and theme editor allow customization of colors, fonts, and sizes, with the widget tree providing an immediate preview of style changes. Stylesheet editor Theme editor Widget tree One of my early mistakes was not defining all database entities and relationships upfront. This oversight led to on-the-fly adjustments, requiring manual updates across multiple screens. Although time-consuming, OutSystems facilitated these changes, emphasizing the importance of careful database planning even in a low-code environment. Database entities Database entities diagram Besides creating local database entities, OutSystems supports integrating external systems like SAP, SOAP, or REST services. I tested this with a REST service by pasting the API endpoint, and OutSystems automatically generated data structures based on the response—a quick and straightforward process. Possible integrations Adding REST service Generated structure based on response from endpoint While most development was smooth, there were some surprising challenges. For example, implementing custom actions for checkboxes in a table—a simple task in a traditional high-code environment—required significant effort. I relied on community forums and experimentation to solve these issues. Additionally, unlike custom app development where changes are visible immediately, OutSystems requires publishing the app to apply and test changes, especially for logic updates that don’t display in Service Studio . This means waiting for the app to publish before changes can be seen in action. On the positive side, the development environment was set up automatically, with deployment handled seamlessly and no configuration needed. All checks are performed before publishing, and errors are displayed in the debugger console, streamlining the process and reducing manual intervention. Although OutSystems offers extensive training resources, I found that community support was limited for more complex questions. The shortage of experienced developers in the community made solving advanced issues more challenging than expected. Overall, my experience with OutSystems was largely positive, with the platform excelling in rapid development and efficiently handling typical use cases. While traditional coding skills remain valuable for advanced customizations, OutSystems provides a solid foundation for quickly bringing ideas to life. Key initial decisions—like choosing the right template and planning database structure—can significantly streamline the process and minimize challenges. Although I am still building experience with OutSystems and have yet to test it against some scenarios I commonly encounter in professional projects, my overall impression of development with OutSystems is promising and encouraging. Custom chat app – prompt marketplace example Custom chat app – featured prompts example Custom chat app – example of inserting image Custom chat app – chat history example Conclusion In summary, OutSystems presents a compelling solution for organizations looking to accelerate application development and manage resource constraints effectively . Its low-code platform simplifies complex coding tasks, offers rapid prototyping capabilities, and bridges the gap between speed and functionality. OutSystems shines in scenarios that require swift development cycles, internal applications, and straightforward integrations, but custom development still has an edge in handling high-traffic or complex, highly customized solutions. Deciding between low-code and traditional development requires careful consideration of your project’s unique requirements, scalability needs, and available resources. If speed-to-market, cost efficiency, and ease of use are top priorities, OutSystems is an excellent choice for your development toolkit. However, for projects demanding full control and complex customization, custom development might better meet your long-term goals. If you’re ready to explore the possibilities with OutSystems or need expert guidance in deciding the best approach for your project, feel free to reach out. Let’s discuss how we can help your organization transform ideas into impactful digital solutions. Leni Duderija React developer at Q with almost a decade of experience in frontend development. Alongside coding, he plays trumpet, he's passionate about hiking, sports and martial arts, with a particular affinity for Krav Maga, boxing, and CrossFit. Wine lover. Recently, he's been lacing up his shoes for runs with his toddler Bartul. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 27, 2024 — 15 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 27, 2024 — 15 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations fro [truncated] ======================================================================== # Failing of Projects and Growing Forward - Tech Consulting and Software Engineering URL: https://q.agency/blog/failing-of-projects-and-growing-forward/ Learn how to handle project challenges, define clear goals, manage risks, and improve software delivery through effective teamwork. Failing of Projects and Growing Forward | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Failing of Projects and Growing Forward Failing of Projects and Growing Forward March 15, 2022 — 7 min read First, there is no such thing as an ideal software product . But we are striving to achieve one while being deeply passionate about it. However, there are a lot of factors and situations that can impact product output. Balance right round like a record, round, round Let’s say we have a clean start, a new project kick-o. Where to begin? Pointing obvious but most important key factors: project goal definition balance workload with the massive support of each team member aim to short-term goals transparency over deadlines , expectations, and risks change is the only constant during a delivery Ran into this piece of art at Tisja’s Kljakovic Braic exhibition held in 2021. It perfectly matches some daily challenges we all have, both in private and business life. I would dare to say that as of an uprising era in software development, the spinning moment is most tangible through development delivery . Tisja’s Kljaković Braić – The man turning the board, 2021 During a project, each of us has a spinning role . We spin those records right around and try to achieve the final result while (hopefully) aligning and mutually understanding each other. That’s why it’s always good to ask questions and challenge actions . Of course, we are humans, after all, so it’s natural we make mistakes. Or we need a new solution for a change in the backlog. Or simply current output is not good enough for delivery. And that’s where the balance of activities, workload, and team eort is crucial to happen. Therefore, every team member should deeply think of it while approaching problem solutions and delivery. Product health check At the beginning of the project, a crucial moment is product roadmap definition where one rule applies: without vision, there is no valuable output . A great example of inspirational leadership and visionary approach is Stewart Butterfield’s Slack memo sent internally a week before launching the application. When starting, it’s important to meet the team with a vision , a high-level overview of the product and diagnose product value, challenges and approach. Product high-level overview For instance, we have a client who wants to build a web-based application for contracting car insurance online, and managing insurance afterward. In parallel, the client desires is to engage employees with the new application and educate them on product dierentiations as the market is constantly changing. Their primary focus is on introducing internal and external users with insurance portfolios and oering the best possible personalized proposal. The intention is to generate new leads and extend the potential market. Mostly, users are approaching from mobile devices, so the application needs to be fully responsive. Before project kick-o, the client made an internal market fit hypothesis , benchmarking, and strategy definition . The goal is to put an application in production in 4 months. Note: Examples and data used are fictional. Goal settings: Raising awareness on vehicle insurance portfolio 3000 new leads in Q4 Diagnosis: Educate employees at branches Vehicle insurance portfolio – min 3 products available Calculate insurance price Integration with 3rd party providers (car insurances) Multi-language support – English, French Compliance and regulatory needs – unknown at the moment Managing insurance products online 80-90% of users accessing from mobile devices Responsive web-app Roadmap definition A key metric when thinking of roadmap and backlog definition should be scaling feature size to determine priorities in the time given for delivery. In the following example, the size of the feature outlines importance while the order of the feature outlines priority for development. This way, everyone gets an overall, bigger picture. Size scaled roadmap Whole beauty (or madness:)) behind ongoing development projects is to generate new ideas and approach each product solution dierently. That’s how innovations happen. One great resource on dierent approaches for defining a roadmap can be found in the Department of product guide . The client stated that vehicle insurance proposals and educational materials are valuable application assets. In contrast, the dashboard and managing insurance are prioritized last and can be postponed for later phases. Important note: even though it sounds like everything is a top priority for development, it honestly isn’t. Use groomings and informal discussion to distinguish between should have and core value features . Successful vs. failed sprint In the given example, the first thing for the backlog is the onboarding flow related to the insurance proposal . The main scenarios revolve around: Give license plate for registered vehicle Find vehicle Give personal data View insurance prices and options During the sprint, the idea is to get design and functional approval and start initial development activities , including project setup and user interface implementation. Many things during the sprint can go wrong, so it’s crucial to define core sprint deliveries , often collaborate and ask questions even more. The worst-case scenario would be to have in sprint features and user stories that do not have enough prerequisites in terms of priorities and decisions needed . This leads us to lack motivation and not get things done precisely. During the sprint, we realized the lack of inputs to get insurance prices and integrate with the 3rd party provider. Reasons are legal regulation changes for traic road safety and technical gaps: Does a user need to sign an application to generate an insurance proposal digitally? How do we calculate and fetch dierent insurance proposals? That’s why the decision was to exclude insurance pricing from the sprint and add Knowledge base flow. Scenarios include: Define document management system (internal) – knowledge areas and metadata used Research on search engine implementation and optimization As sprint output, we showcased partial onboarding flow and presented findings on knowledge base flow. What have we learned out of it? It’s okay to accept changes during the sprint but more important to trace what was done and what was descoped from the planned sprint, including reasons behind those actions. What was not so good in this sprint? Desire was to round up the onboarding flow, but we could not adapt to the new situation due to circumstances. For the future, the idea is to stabilize flow in development. A closely engaged client is needed to raise awareness of all risks and eects on the outcome. Tip: Be consistent, aim for a short term goal to have a clear output of one sprint rather than having too much work which will not be done. If in one sprint you can’t summarize 5-8 bullets what was done then the sprint should be treated as a failed one . Sprint formula Transparency and changes To think of transparency, let’s put it this way – have you seen the good output of products when information and insights were hidden from team members involved in its delivery? In fact, how to get people to trust and love what they do with applications being developed if they don’t get all pieces of information? The biggest challenge is communicating changes and understanding what was aligned before the development started and what was changed. That’s why data analysis must always be traceable . All facts, insights and valuable knowledge lie in data and the only question is how and when it is presented ? This brings us back to the balance of workload and team eort previously mentioned that must be achieved. However, everything is doable with wise, timely communication of needed parties. Conclusion It’s okay to fail or succeed in the project, but learning something is the most valuable asset. During development, don’t be afraid to ask any questions, communicate unknowns, changes, and balance, always balance . Right round, like a record, round round. Or, if in doubt about how to achieve all points mentioned, feel free to reach us to help you! Maja Kostic Maja is a certified product ownership analyst (IIBA-CPOA) with multi-year experience in various industries, on both client and vendor side. Constant problem solving is a persistent incentive for her motivation, which she combines with a willingness to learn, collaborate and share knowledge. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 15, 2022 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 15, 2022 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Fifteen Seconds Festival - Tech Consulting and Software Engineering URL: https://q.agency/blog/fifteen-seconds-festival/ Q attended Fifteen Seconds Festival in Graz, connecting with global companies and creative minds across business, innovation, and technology. Fifteen Seconds Festival | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Fifteen Seconds Festival Fifteen Seconds Festival June 19, 2019 — 1 min read We are still gathering our thoughts from the Fifteen Seconds adventure in Graz which is an international platform at the intersection of business, innovation, and creativity, calling all curious minds eager to share their knowledge, drive positive change, and shape the future. Fifteen Seconds unites a global community of curious minds, from students to CEOs. The three days we spent there flew by with productive meetings with companies and people from all around the globe! Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 19, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 19, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Finalists of the “Golden Kuna” Award - Tech Consulting and Software Engineering URL: https://q.agency/blog/finalists-of-the-golden-kuna-award/ Q was named a finalist for Croatia’s prestigious Golden Kuna Award, recognising leading companies and entrepreneurial achievements across the country. Finalists of the “Golden Kuna” Award | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Finalists of the “Golden Kuna” Award Finalists of the “Golden Kuna” Award December 3, 2018 — 1 min read “Zlatna kuna” is an entrepreneurial Oscar rewarding leading Croatian companies in dierent categories. The award-giving ceremony this year brought together many business people and public and political figures, including President Kolinda Grabar-Kitarović, Prime Minister Andrej Plenković, Deputy Prime Minister and Agriculture Minister Tomislav Tolušić, Economy Minister Darko Horvat, Zagreb University Rector Damir Boras, former President of the Croatian Academy of Sciences and Arts Zvonko Kusić, representative of the Speaker of the Croatian Parliament Branko Bačić and Deputy Mayor of Zagreb Olivera Majić. In our category “the best post-startup company” award went to Microblink, a company that owns Photomath, the app that is used by over 100 million people worldwide. Paula Kovacevic Paula is the Head of Operations, working on process improvement and developing the company's quality level. She is a Certified Internal Auditor for Quality Management and soon-to-be a Six Sigma Green Belt Master. She strives to keep processes simple and clients happy. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 3, 2018 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 3, 2018 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Finding the Right Fit: How to Fill Hard-to-Hire Roles - Tech Consulting and Software Engineering URL: https://q.agency/blog/finding-the-right-fit-how-to-fill-hard-to-hire-roles/ Read more about finding the right fit and how to fill hard-to-hire roles such as Manager of Frontend Excellence. Finding the Right Fit: How to Fill Hard-to-Hire Roles | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Finding the Right Fit: How to Fill Hard-to-Hire Roles Finding the Right Fit: How to Fill Hard-to-Hire Roles October 28, 2025 — 7 min read Finding the right fit for a key role isn’t always straightforward — especially when the role itself doesn’t fit any standard definition. This is the story of how we searched, evaluated, and finally found the perfect Manager of Frontend Excellence for Q’s Centre of Excellence — and why patience and clarity pay off. Building a Company That Thinks Beyond Delivery At Q, we’ve always aimed to be more than just another development agency — our goal is to be a true technical partner to every client. The old model — agree on scope, build a team, deliver, and hand over — simply doesn’t fit the realities of modern projects anymore. We believe in long-term partnerships built on trust, open communication, and shared goals. That means carefully choosing the right clients and projects — ones where we know we’re the right fit and can deliver lasting value. When Client Expectations Drive Internal Evolution So, as our projects grew more complex, our clients began expecting more from us — not just in delivery, but in leadership . They looked to us to help drive their technical direction. Naturally, that level of partnership demands roles that go beyond standard job descriptions. And sometimes, our own internal growth requires us to bring in people who can shape how we operate as a company. That’s one of the reasons we established our Centre of Excellence (CoE) — a dedicated department built to promote best practices, governance, and continuous improvement across all domains. The department itself doesn’t bring value just by existing. The same rule that applies to any company applies here — the people are what make it valuable. In this case, those people are our CoE Managers. Assigning them internally came naturally for most domains, but one role stood out and proved to be the hardest to fill: Manager of Frontend Excellence . A Role Without a Template We started from scratch — defining the role from the ground up. This wasn’t a standard frontend engineer or tech lead position. The person in this role would need to take horizontal ownership of the entire frontend ecosystem across the company. Furthermore, they would need to establish governance, set standards, and drive improvement across multiple teams. It was a role that would shape Q’s frontend future — and we couldn’t afford to get it wrong. We needed someone with a strong mix of technical depth, leadership, and strategic vision — someone capable of integrating deeply into our ecosystem and helping it evolve. Defining What ‘the Right Fit’ Means We started by drafting a clear job description . Some requirements were universal across all CoE Managers — a leadership mindset, commitment to best practices, and a passion for excellence. But the frontend side had its specifics, and we needed to communicate them clearly. It was important to give each candidate an honest overview of the company and a transparent picture of what challenges awaited them. We analyzed our tech stack, frameworks, libraries, and how our frontend developers collaborated with other teams. Then, we mapped out what our ideal candidate would look like: Deep expertise in at least one modern frontend framework Broad understanding of the frontend ecosystem Confidence in defining processes and standards The ability to connect technical decisions with business strategy Exploring Every Avenue To find the right fit, we took a three-track approach: Internal candidates – we encouraged our existing engineers with leadership potential to apply. Network outreach – we reached out to trusted professionals within our network. Public job posting – we opened the position on platforms like LinkedIn and our website. Our internal search identified several strong candidates. We reviewed their past work, gathered feedback, and spoke with them directly. While we could have filled the position internally, we wanted to explore every possible path before making a decision . Our network search brought us close, but many of the best candidates were already committed elsewhere. And we weren’t looking for someone motivated purely by compensation — we wanted someone excited about the opportunity to build something meaningful. Finally, we opened the position publicly and waited to see who would rise from the pool. Evaluating Candidates With Care Once applications started coming in, we reviewed each one in detail. Every CV, portfolio, public GitHub contribution, personal project, blog post, or conference talk was carefully examined to understand each candidate’s strengths and approach. Our process had two main stages: First Interview . Led by the Talent team and myself (as the initial reviewer). This step assessed technical skills, leadership potential, and mindset. I had full autonomy to decide whether to move forward with a candidate or not. Second Interview . Conducted by our CoE Director, who approached each candidate from a strategic and business perspective, ensuring we had a well-rounded assessment from every angle. After both rounds, we aligned internally and calibrated feedback before making any decisions. It was a thorough, structured process that took time, but it ensured we were evaluating fairly and consistently. When Everything Fell Into Place We didn’t impose strict timelines on ourselves, even though this was a crucial role. Finding the right fit, a.k.a. the right person takes time. In the meantime, I temporarily oversaw both backend and frontend domains, which gave me valuable insight into what we truly needed in a Frontend CoE Manager. Then, one application stood out. She had years of experience in a similar position and had spent a long time at her previous company — where she had built that role from scratch , rather than stepping into an existing structure. In an industry where job-hopping was common (especially a few years ago), that kind of loyalty caught my attention. It was a sign that this person could handle the challenge and commit for the long run. Her experience aligned perfectly with what we needed. From design system implementation and standardisation to a proactive, business-aware mindset. She was also studying business management, which made her an even stronger fit. During the interview, everything just clicked. She was genuine, thoughtful, and confident. And everything on her CV checked out. After our meeting, the Talent team and I looked at each other and said, “That’s it.” The CoE Director’s interview confirmed what we already knew. We’d found our new Manager of Frontend Excellence . The Final Piece of the Puzzle Bringing her onboard was a turning point for our CoE. It filled the last missing piece and allowed the department to thrive across all domains . Looking back, the process reaffirmed one of our strongest beliefs: Hiring for challenging roles takes time, patience, and clarity — but the results are always worth it. We didn’t just hire a manager. We found a leader who embodies Q’s culture of excellence. Someone who helps us push boundaries, raise standards, and build even stronger partnerships, both internally and externally. And in this case, being a little “picky” truly paid off. Key Takeaways Define before you search. A clear, well-thought-out role description saves time and avoids mismatched expectations later. Stay patient. The right candidate for a critical position may take time to find — rushing rarely pays off. Balance skills and mindset. Technical expertise matters, but leadership, communication, and strategic thinking make the real difference. Value alignment over urgency. When someone truly fits your company’s culture and vision, it’s worth the wait. Let’s Build Something Great Together Looking to strengthen your technical teams or elevate your product delivery? Let’s talk. Our experts at Q can help you build, scale, and empower engineering excellence. From frontend and backend to complete digital ecosystems. We might be just the right fit for you. Vicko Franic Vicko is our Centre of Excellence Head of Technology. With extensive experience in developing advanced web applications, he leads our tech initiatives with precision and innovation. Outside of work, Vicko is an accomplished guitarist, performing with several bands — a clear proof of his creativity both in and out of the office. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 28, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 28, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Firebase & Crashlytics in Flutter and Swift - Tech Consulting and Software Engineering URL: https://q.agency/blog/firebase-crashlytics-in-flutter-and-swift/ Learn how to integrate Firebase and Crashlytics into Flutter and Swift apps to monitor crashes, improve stability, and troubleshoot issues. Firebase & Crashlytics in Flutter and Swift | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Firebase & Crashlytics in Flutter and Swift Firebase & Crashlytics in Flutter and Swift November 9, 2020 — 15 min read What is Firebase? In short, Firebase is Google’s mobile application development platform that helps you build, improve, and grow your app. More specific Firebase is a toolset that allows a developer to cover a large portion of the services that the developer should normally build by himself. Those services include things like analytics, authentication, databases, configuration, file storage, push messaging, etc. All of those services are hosted in the cloud and scale from little to no eort on the developer part, meaning that products have backend components that are fully maintained and operated by Google. Client SDKs provided by Firebase interact with those backend services directly, with no need to establish any middleware between your app and the service. So, if you’re using one of the Firebase database options, you typically write code to query the database in your client app. If you are asking yourself “What sort of apps is Firebase good for?” then the answer is that there’s no limit to the types of apps that can be helped by Firebase products. There are only limits to the platforms it can be used on. iOS and Android are the primary targets for the Firebase SDKs, and there’s increasing support for web, Flutter, Unity, and C++. You should also know there’s an Admin SDK available for a variety of languages, to be used with any backend components you might require. What is Crashlytics? Firebase Crashlytics is a lightweight, real-time crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality. Crashlytics save you troubleshooting time by intelligently grouping crashes and highlighting the circumstances that lead up to them. Find out if a particular crash is impacting a lot of users. Get alerts when an issue suddenly increases in severity. Figure out which lines of code are causing crashes. Firebase Crashlytics helps you track, prioritize, and fix stability issues that erode app quality in realtime, which allows you to spend less time triaging and troubleshooting crashes and more time building app features that delight users. Crashlytics quickly pinpoints the root cause of crashes by intelligently grouping an avalanche of crashes into a manageable list of issues. It also provides information on why a crash occurred and what happened leading up to it. With this insight, you can uncover the root cause of crashes more quickly. Crashlytics lets you understand what issue to tackle first with prioritizing by the impact on actual users, so you know how best to triage eort for fixing bugs. Crashlytics never miss a critical crash. You can get real-time alerts for new issues, regressed issues, and burgeoning issues that might require immediate attention, no matter where you are. With all that being said, it’s time to take a look at how to install Firebase and use it. Firebase in Swift We will begin with Firebase for Swift. Here are the requirements to install Firebase: Xcode 11.0 or later CocoaPods 1.9.0 or later Your project must target iOS 10 or later. Set up a physical iOS device or use the iOS simulator to run your app. Step 1: Create a Firebase project After making sure that you have everything you need, we can now create a Firebase project. To do so, open the Firebase console, click Add project , then select or enter a Project name . You are creating a new project, so you can edit the Project ID , but this is optional since Firebase automatically assigns a unique ID to your Firebase project. After that, you can click Continue . Step 2: Register your app with Firebase After you have a Firebase project, you can add your iOS app to it. Go to the Firebase console . In the center of the project overview page, click the iOS icon to launch the setup workflow. If you’ve already added an app to your Firebase project, click Add app to display the platform options. Enter your app’s bundle ID in the iOS bundle ID field. Make sure to enter the bundle ID that your app is actually using. The bundle ID value is case-sensitive, and it cannot be changed for this Firebase iOS app after it’s registered with your Firebase project. This is optional, but if you like you can enter other app information: App nickname and App Store ID . Click Register app. Step 3: Add a Firebase configuration file After clicking the Register app you should be able to click Download GoogleService-Info.plist to obtain your Firebase iOS config file ( GoogleService-Info.plist) . Here are something that you might like to know about this config file: The Firebase config file contains unique, but non-secret identifiers for your project. You can learn more about this config file by clicking this link . You can download your Firebase config file again at any time. Make sure the config file name is not appended with additional characters, like ( 2 ). Move your config file into the root of your Xcode project. If prompted, select to add the config file to all targets. Keep in mind that if you have multiple bundle IDs in your project, you must associate each bundle ID with a registered app in the Firebase console so that each app can have its own GoogleService-Info.plist fil. Step 4: Add Firebase SDKs to your app Firebase recommends that you install the SDK using CocoaPods. If you don’t know what CocoaPods is and you don’t have them installed I recommend that you visit this link and read through the documentation and install everything you need before you proceed with this article. Create a Podfile if you don’t already have one: Navigate to your project directory using terminal cd your-project-directory Create a pod file pod init Open Xcode or open the podfile with a text editor. In your Podfile, add the Firebase pods that you want to use in your app. You can add any of the supported Firebase products to your iOS app. After that close Xcode, open Terminal again, and install the pods pod install That’s it! You are ready to use Firebase in your Xcode project. Just make sure to open your .xcworkspace file to see the pods you just installed. Step 5: Initialize Firebase in your app The final step is to add initialization code to your application and this is how to do it. Import the Firebase module in your UIApplicationDelegate.swift: import Firebase Configure a FirebaseApp shared instance. This is typically done in your app’s application:didFinishLaunchingWithOptions: method: FirebaseApp.configure() If you’ve included Firebase Analytics, you can run your app to send verification to the Firebase console that you’ve successfully installed Firebase. Firebase in Flutter Let’s continue with Firebase for Flutter. Here are the requirements to install Firebase: Install your preferred editor or IDE. Make sure that your Flutter app targets iOS 8 or later. Set up a physical iOS device or the iOS simulator for running your app. For Cloud Messaging, complete the following tasks: Set up a physical iOS device. Obtain an Apple Push Notification Authentication Key for your Apple Developer account. Enable Push Notifications in XCode under App > Capabilities . For all other Firebase products, you can use either a physical iOS device or the iOS simulator. Install Flutter for your specific operating system, including the following: Flutter SDK Supporting libraries Platform-specific software and SDKs Sign in to Firebase using your Google account. Step 1: Create a Firebase project Before you can add Firebase to your Flutter app, you need to create a Firebase project to connect to your app. Create a Firebase project In the Firebase console , click Add project , then select or enter a Project name . If you have an existing Google Cloud Platform (GCP) project, you can select the project from the dropdown menu to add Firebase resources to that project. This part is optional but, if you are creating a new project, you can edit the Project ID . As mentioned before, Firebase automatically assigns a unique ID to your Firebase project. After Firebase provisions resources for your Firebase project, you cannot change your project ID. To use a specific identifier, you must edit your project ID during this setup step. After you are finished with that, click Continue . Step 2: Register your app with Firebase Before we jump into registering your app, there is one important note: If you’re releasing your Flutter app on both iOS and Android, register both the iOS and Android versions of your app with the same Firebase project . In the center of the Firebase console’s project overview page , click the iOS icon to launch the setup workflow. If you’ve already added an app to your Firebase project, click Add app to display the platform options. Enter your app’s bundle ID in the iOS bundle ID field. Find this bundle ID from your open project in XCode. Select the top-level app in the project navigator, then access the General tab. The Bundle Identifier value is the iOS bundle ID (for example, com.yourcompany.ios-app-name ). This step is optional but, you can enter other app information as prompted by the setup workflow, here are the explanations for both of the fields: App nickname: An internal, convenience identifier that is only visible to you in the Firebase console App Store ID: Used by Firebase Dynamic Links to redirect users to your App Store page and by Google Analytics to import conversion events into Google Ads . If your app doesn’t yet have an App Store ID, you can add the ID later in your Project Settings . After you finished filling in all the info, click the Register app . Step 3: Add a Firebase configuration file This step is very similar to adding a Firebase configuration file to your iOS project, we just need to place the file in the right folder. To do so, click Download GoogleService-Info.plist to obtain your Firebase iOS config file ( GoogleService-Info.plist ) and using XCode, move the file into the Runner/Runn e r directory of your Flutter app. Step 4: Add FlutterFire plugins Before we jump into FlutterFire plugins, let’s take a moment to go get a better understanding of what is FlutterFire. Flutter uses plugins to provide access to a wide range of platform-specific services, such as Firebase APIs. Plugins include platform-specific code to access services and APIs on each platform. Firebase is accessed through a number of dierent libraries, one for each Firebase product (for example: Realtime Database, Authentication, Analytics, or Storage). Flutter provides a set of Firebase plugins, which are collectively called FlutterFire . Since Flutter is a multi-platform SDK, each FlutterFire plugin is applicable for both iOS and Android. So, if you add any FlutterFire plugin to your Flutter app, it will be used by both the iOS and Android versions of your Firebase app. Here is a link with the up-to-date docs that you can visit for the most up-to-date list of FlutterFire plugins. Okay, back to work, let’s add Firebase to your Flutter app. Ensure that your app is not currently running in your emulator or on your device. From the root directory of your Flutter app, open your pubspec.yaml file. Add the FlutterFire plugin for the Firebase Core Flutter SDK. dependencies:   flutter:     sdk: flutter   # Add the dependency for the Firebase Core Flutter SDK   firebase_core: ^0.4.0+9 Add the FlutterFire plugins for the Firebase products that you want to use in your app. For example: dependencies:   flutter:     sdk: flutter   # Check that you have this dependency (added in the previous step)   firebase_core: ^0.4.0+9   # Add the dependency for the FlutterFire plugin for Google Analytics   firebase_analytics: ^5.0.2   # Add the dependencies for any other Firebase products you want to use in your app   # For example, to use Firebase Authentication and Cloud Firestore   firebase_auth: ^0.14.0+5   cloud_firestore: ^0.12.9+5 Run flutter packages get. For more information about managing packages and plugins, refer to this link . If you added Analytics, run your app to send verification to Firebase that you’ve successfully integrated Firebase. Otherwise, you can skip the verification step. You’re all set! Your Flutter app is registered and configured to use Firebase. Try out an example app with Analytics Like all packages, the firebase_analytics plugin comes with an example program . Open a Flutter app that you’ve already configured to use Firebase. Access the lib directory of the app, then delete the existing main.dart file. From the Google Analytics example program repository, copy-paste the following two files into your app’s lib directory: main.dart tabs_page.dart Run your Flutter app. Go to your app’s Firebase project in the Firebase console , then click Analytics in the left-nav. Click Dashboard . If Analytics is working properly, the dashboard shows an active user in the “Users active in the last 30 minutes” panel (this might take time to populate this panel). Click DebugView . Enable the feature to see all the events generated by the example program. For more information about setting up Analytics, visit the getting started guides for iOS and for Android . Crashlytics in Swift Since we already went through what is Crashlytics, we are going to jump right into configuring it. Step 1: Set up Crashlytics in the Firebase console Click Crashlytics in the left-hand nav panel of the Firebase console . If your Firebase project has multiple apps registered in it, select the app you just added from the dropdown next to Crashlytics in the top bar of the console. Click Enable Crashlytics . Step 2: Add Firebase Crashlytics to your app Open the podfile you created for your Firebase project and add the FirebaseCrashlytics pod. For an optimal experience with Firebase Crashlytics, it’s recommended to enable Google Analytics in your project by adding the Firebase pod for Analytics to your app as well. Make sure you add Google Analytics Version 6.3.1 or later in order to get real-time crash-free users and breadcrumbs. pod 'Firebase/Crashlytics' # Recommended: Add the Firebase pod for Google Analytics pod 'Firebase/Analytics' Close Xcode and install the pods using Terminal, then re-open your .xcworkspace file to see the project in Xcode. pod install Import the Firebase module in your UIApplicationDelegate . import Firebase Configure a FirebaseApp shared instance, typically in your app’s application:didFinishLaunchingWithOptions: method. FirebaseApp.configure() Recompile your app and the build should be successful. Step 3: Initialize Crashlytics You can initialize Crashlytics by adding a run script to your project’s build phase. The run script allows Xcode to automatically upload your project’s dSYM file whenever your app crashes so that Crashlytics can automatically generate crash reports. Make sure your new build phase is the project’s last build phase or Crashlytics can’t initialize properly. Open your project in Xcode, then select its project file in the left navigator. From the Select a project or target dropdown, select your main build target. Select the Build Phases tab, then click add > New Run Script Phase . Expand the new Run Script section that appears. In the script field (located under the Shell field), add a new run script. "${PODS_ROOT}/FirebaseCrashlytics/run" Add your app’s dSYM location as an input file that enables Crashlytics to automatically generate dSYMs for large apps more quickly. For example: ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME} You can also provide your app’s built I nfo.plist location to the build phase’s Input Files field. $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) After you add the SDK to your app, Crashlytics automatically gets to work listening for and collecting crash reports. Finally, run your app. Your device logs display the Firebase verification that initialization is complete. Make sure to disconnect the simulator from the Xcode debugger to see crashes in the Firebase console. Crashlytics in Flutter Configuration of Crashlytics in Flutter is pretty simple. Step1: Set up Crashlytics in the Firebase console Click Crashlytics in the left-hand nav panel of the Firebase console . If your Firebase project has multiple apps registered in it, select the app you just added from the dropdown next to Crashlytics in the top bar of the console. Click Enable Crashlytics . Step 2: Add Firebase Crashlytics to your app Add Package Dependency in pubspec.yaml dependencies:   flutter:     sdk: flutter   # Check that you have this dependency (added in the previous step)   firebase_core: ^0.4.0+9   # Add the dependency for the FlutterFire plugin for Google Analytics   firebase_analytics: ^5.0.2   # Add the dependency for the Crashlytics   firebase_crashlytics: "^0.2.0" Add the following classpath to your android/build.gradle file. dependencies {     classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'} Apply the following Plugin to the end of your android/app/build.gradle file. apply plugin: 'com.google.firebase.crashlytics' Add the Firebase Crashlytics SDK , in your android/app/build.gradl e files. dependencies {     // Adding Firebase Crashlytics SDK     implementation 'com.google.firebase:firebase-crashlytics:17.0.0-beta01'   } (iOS ) Select Runner at project navigation from Xcode. Then Select the Tab Build phase => Click on + > New Run Script Phase Add ${PODS_ROOT}/FirebaseCrashlytics/run to the Type a script.. text box. Import package At Your Project File: import 'package:firebase_crashlytics/firebase_crashlytics.dart'; Step 3: Initialize Crashlytics Add Firebase Crashlytics Instance In Your Flutter App. void main() {     // Set `enableInDevMode`to true to see reports while in debug mode     // This is only to be used for confirming that reports are being     // submitted as expected. It is not intended to be used for  //everyday development.  Crashlytics.instance.enableInDevMode = true;     // Pass all uncaught errors to Crashlytics.     FlutterError.onError = Crashlytics.instance.recordFlutterError;     WidgetsFlutterBinding.ensureInitialized();     SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]).then((_) {       SharedPreferences.getInstance().then((prefs) {         var darkModeOn = prefs.getBool('darkMode') ?? true;         runZoned(() {           runApp(ChangeNotifierProvider(             create: (_) => ThemeNotifier(darkModeOn ? darkTheme : lightTheme),             child: MyApp(),           ));         }, onError: Crashlytics.instance.recordError);       });     });   } That’s it! Rebuild your app and everything should work. $ flutter run You will be able to see the crashlytics dashboard in the firebase console on a successful installation. That’s all folks! If there are any more questions that you would like to get answered, I’ll leave some link to oicial Firebase documentation 🙂 Add Firebase to your iOS project Add Firebase to your Flutter app Get started with Firebase Crashlytics Crashlytics Filip Varda He pays attention to the smallest details and makes sure our mobile applications work. If you need to talk about the newest mobile trends or gadgets, he’s the guy to go to. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 9, 2020 — 15 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 9, 2020 — 15 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # First AHKnext event - Tech Consulting and Software Engineering URL: https://q.agency/blog/first-ahknext-event/ Q hosted the first AHKnext event, bringing together young business leaders in Croatia to network, exchange experiences, and learn from each other. First AHKnext event | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > First AHKnext event First AHKnext event June 6, 2019 — 1 min read With the intention of creating a networking platform for young businesspeople under the 40, in: leading positions, middle management and young talents in companies from various industries, the German-Croatian Chamber of Commerce and Industry (AHK) has launched a new format of events called AHKnext. We are proud that the first AHKnext event took place in Q’s premises so we had a chance to present Q and the projects we worked on to all the attendants. AHK has launched this initiative that will regularly gather young leaders from leading companies in Croatia. The idea is to create an informal and intimate environment where people will open up to each other, exchange experiences, share tips, and learn from each other. ‘I’m proud that the German Chamber chose us for their first event. We have gone through a diicult and thorny path, we made mistakes before we became one of the leading agencies in Europe, so we had a lot to share. I have the impression that it was very useful for everyone who came today.’— said our CEO Filip Ljubić. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 6, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 6, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Flutter and Sentry - Automatic Error Reporting - Tech Consulting and Software Engineering URL: https://q.agency/blog/flutter-and-sentry-automatic-error-reporting/ Learn how to integrate Sentry with Flutter for automatic error reporting, crash monitoring, breadcrumbs, and real-time alerts through Slack. Flutter and Sentry - Automatic Error Reporting | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Flutter and Sentry – Automatic Error Reporting Flutter and Sentry – Automatic Error Reporting January 15, 2026 — 8 min read In most cases, error reports from the Flutter terminal will give developers a headache as those reports usually contain unnecessary information instead of just getting to the core issue. This is where Sentry steps in. Sentry is a platform that helps you better monitor the application . Introducing Sentry to your application will give you information about performance and errors which would not be received otherwise. You can integrate Sentry with Slack chat and receive reports in real-time to make it even easier to use. Sentry Features Some of the many Sentry features are: Automatic native crash error tracking using both android and iOS Sampling rate Oline storage of events Breadcrumbs are automatically captured by Flutter SDK , Native SDKs , and HTTP with the support of Dart SDK Breadcrumbs Sentry creates a trail of events in the code by using breadcrumbs to monitor what happened before the issue occurred. Events created in this way are usually more structured and clear. If the application unexpectedly crashes with the default behavior of the Flutter SDK , some events might be lost, but when using Sentry, the SDK will store the events on the device’s disk before the crash. You can manually add breadcrumbs whenever something interesting happens. The code snippet down below shows how to add breadcrumbs manually . body: ElevatedButton(                 child: const Text('Breadcrumb'),                 onPressed: () {                   print('A print breadcrumb');                   Sentry.captureMessage('A message with a print() Breadcrumb');                 },               ), Full detailed analytics of the breadcrumb trail of events that happened can be viewed on Sentry.io. Breadcrumbs can be filtered by type, category, description, level, and time when the issue occurred. The Flutter SDK already captures breadcrumbs automatically via the Native SDKs for Android and iOS . For additional navigation breadcrumbs for Flutter apps, add the SentryNavigatorObserver to your MaterialApp, WidgetsApp, or CupertinoApp. import 'package:flutter/material.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; MaterialApp(   navigatorObservers: [     SentryNavigatorObserver(),   ], ); Getting Started Adding Sentry package in pubspec.yaml file will install Sentry in your application: dependencies:   sentry_flutter: ^6.2.2 After including Sentry import package in main.dart file and start to configure it: import 'package:sentry_flutter/sentry_flutter.dart'; const String _exampleDsn =     'https://yourSentryDsnHere@sent...'; Future main() async {   await SentryFlutter.init(     (options) {       options.dsn = _exampleDsn;       options.tracesSampleRate = 1.0;     },     appRunner: () => runApp(const MyApp()),   ); } With Sentry, you can manage the volume of the collected data . The higher value you choose, the more in-depth information you will receive, but too much information can again be confusing. Sentry documentation recommends starting at a lower value and increasing the rate as you learn about your traic patterns and volume. After setting up, for testing purposes, try adding a code snippet that includes an intentional error to see if the errors are sent to Sentry: body: ElevatedButton(         child: const Text('async throws'),         onPressed: () => asyncThrows(),       ), Tips for Catching Errors: Use a try/catch block Use a catchError block for Futures The SDK already runs your init callback on an error handler, such as using runZonedGuarded, which is captured automatically Flutter-specific errors, such as using FlutterError.onError, are captured automatically Isolate errors on the current Isolate, equivalent to a main/UI thread, such as using Isolate.current.addErrorListener, are captured automatically (only for non-Web Apps). For your own Isolates, add an ErrorListener and call Sentry.captureException Capturing Errors Sentry provides methods to filter data in your project. For example, inbound data filters allow you to determine which errors Sentry should ignore or accept. Inbound filters include: Common browser extension error Events coming from localhost Known legacy browsers errors Known web crawlers By their error message From specific release versions of your code From certain IP addresses It filters error events by using the beforeSend callback method and configuring, enabling, or disabling integrations. The beforeSend is called immediately before the event is sent to the server, so it’s the final place where you can edit its data. The beforeSend callback is passed to the event and a hin t. Hint holds the original exceptions so the additional data can be extracted or grouping is aected. import 'package:sentry/sentry.dart'; SentryEvent beforeSend(SentryEvent event, {dynamic hint}) {   // Modify the event here:   event = event.copyWith(serverName: null);   return event; } Future main() async {   await Sentry.init((options) => options.beforeSend = beforeSend); } To get more about this error and how to resolve the recorded errors, log into Sentry.io and open up your project. Clicking on the error’s title will open a page where you see all the details and afterward mark it as resolved when you are done with it. After you successfully connect the Flutter application with the Sentry, all errors will be captured and shown in the „Issues“ section shown below: If you are using a multi-staged release process, you can also select a dierent default environment and set conditions that match the environment attribute to restrict alerts to only specific release stages. Sentry with Slack integration Integrating Sentry with Slack enables the possibility to define which reports will be received and who will receive them. It can be only one person or maybe the whole team. Once you make this integration, you don’t necessarily need to be logged in on the Sentry platform to receive error reports in Slack chat. Instead, you will be able to track those errors in real-time inside Slack chat and take immediate actions by assigning, resolving, or ignoring the error link provided by the Sentry bot. You have to have access to both Sentry and Slack to get started. Sentry owner or admin permissions are required for installation. Go to Settings in Sentry and choose Integrations, which will display a list of possible integrations. Choose Slack and Click the button Add Workspace . After successful installation, a green confirmation text Installed should appear, and integration is now available to all projects in your Sentry organization. Alert Set-Up (Setry.io): Once again, in Sentry , navigate to Settings and choose Alerts. From the drop drown menu choose a project to which you want to add alerts, and then click on Create Alert Rule : There are many options of alert types, but for simplicity of demonstration, I will use: Error > Issues. After selecting the alert of your choice, you can proceed by clicking the button Set Conditions. Setting Conditions: Conditions are here to help you customize how the alerts will be received. In my example „Issues“ I get to set 3 categories: Add alert settings Set conditions Set action interval Add alert settings: Choose where you want these conditions to apply. I will leave the default one All Environments and provide the alert name. Try keeping the alert name short and simple. Set Conditions: You get three conditions that need to be set to customize your alert. When – you choose what happens when an event is captured. In this example, you can set “A new issue is created “whenever Sentry captures an event. Again, you can choose multiple triggers or just one. If – you can set filters to customize further what conditions need to be met to perform actions assigned by then. I filtered what would happen if the issue was assigned to Mobile Team. This condition is optional to choose one, multiple, or none of the given filters. Then – you pick who will receive and where they will receive an alert. This is where you connect alerts with Slack. In Slack Workspace, you must enter the correct Slack channel name. Otherwise, alert notifications won’t work. If you like to keep notifications under tags, go ahead and add a tag name. The action interval, or rate limit, controls how often the alert rule can be triggered for a particular issue. The available intervals are: Minutes: 5, 10, 30, 60 Hours: 3, 12, 24 Days: 7, 30 Alert Set-Up (Slack): To add the Sentry bot to your Slack channel, navigate to chosen channel and type @sentry in chat. This command will invite the Sentry bot to the channel, which will provide future alert notifications. Testing: To test if the alert setup is completed successfully, you could create some intentional issues. Here is the example: StatError captured inside the mobile app and recorded on the sentry.io. Same Issues appeared in the Slack channe l, so you can use the Resolve, Ignore, or Assign buttons to update the issue in sentry.io directly from Slack chat. Conclusion Spending an extra couple of minutes to set up Sentry is worth it in the long run. It will shorten the time spent on tracking and resolving the errors. Great way to manage how much info you need on an error instead of going through pages of explanation. Matija Kovacevic Matija works as a Flutter developer at Q. Writing code was his dream, and now he gets to live it. The only issue he has at his workplace is how to get his cat to stop using his keyboard as a bed GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 15, 2026 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 15, 2026 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Flutter – Bloc vs. Riverpod State Management for Beginners - Tech Consulting and Software Engineering URL: https://q.agency/blog/flutter-bloc-vs-riverpod-state-management-for-beginners/ Compare Bloc and Riverpod in Flutter and learn how both state management solutions handle API data in a production-ready app. Flutter – Bloc vs. Riverpod State Management for Beginners | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Flutter – Bloc vs. Riverpod State Management for Beginners Flutter – Bloc vs. Riverpod State Management for Beginners March 31, 2022 — 2 min read State management is simply a solution that takes care of the changes that occur in the application. There are many state management solutions, and deciding which one to use can be overwhelming, especially to someone relatively new to Flutter or without much experience. When working on complex and large production applications , it is crucial to choose a proper state management solution to make the application respond to the user accordingly and to be able to keep track of every change inside the application. In this blog, we will cover the basics of Bloc and Riverpod on a simple fetch data from the API example and see how they simplify state management. The idea behind the application The main idea is to compare Bloc and Riverpod and see their similarities and dierences. We will use a Random Fact API , and every time we press the buttons the API will be called. The random fact will then be returned and displayed on a card. By pressing the first button, we will demonstrate state management using Riverpod, and by pressing the second button state management using Bloc. Project setup Create a new Flutter application and add required dependencies in pubspec.yaml file. name: bloc_vs_riverpod_example description: A new Flutter project. version: 1.0.0+1 environment:   sdk: ">=2.15.1 <3.0.0" dependencies:   flutter:     sdk: flutter   cupertino_icons: ^1.0.2   dio: ^4.0.4   flutter_bloc: ^8.0.1   equatable: ^2.0.3   flutter_riverpod: ^1.0.3   connectivity_plus: ^2.2.0 dev_dependencies:   flutter_test:     sdk: flutter   flutter_lints: ^1.0.0   bloc_test: ^9.0.2   state_notifier_test: ^0.0.4   mockito: ^5.0.17   build_runner: ^2.1.7 flutter:   uses-material-design: true Plugins and packages: dio : A powerful HTTP client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout, etc. flutter_bloc : The Flutter package makes it easy to integrate blocs and cubits into Flutter. equtable : Dart package that helps implement value-based equality without needing to override explicitly == and hashCode. flutter_riverpod : A simple way to access state from anywhere in your application while robust and testable. connectivity_plus : Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS. bloc_test : Testing library, which makes it easy to test blocs. state_notifier_test : A testing library that makes it easy to test StateNotifier. mockito : A mock framework inspired by Mockito with APIs for Fakes, Mocks, behavior verification, and stubbing. build_runner : A build system for Dart code generation and modular compilation. Project Structure Common folder contains network services and models that handle our application’s network logic and are independent, and can be easily used across the application. Data folder contains model classes that store and convert the data fetched from the API service. Domain folder contains repositories that connect our data and presentation layer. Presentation folder contains blocs, providers, and cubits, responsible for the state management, and pages and widgets, responsible for the user interface design. Test folder contains tests for testing the features of Bloc, state notifier, and cubit. This is a basic structure of clean architecture in the Flutter community , but you can modify it according to your needs and choice, just as we did for this application. Clean architecture is significant and makes our code understandable, testable, and maintainable, so we can easily change or add something to our application in the future. Rest API This project will use Random Facts API from here and this endpoint . The response is JSON in this format: {     "id": "0b17d5b9-79dc-4ca1-81f1-215bd259fa7a",     "text": "Starfish haven`t got brains.",     "source": "djtech.net",     "source_url": "http://www.djtech.net/humor/useless_facts.htm",     "language": "en",     "permalink": "https://uselessfacts.jsph.pl/0b17d5b9-79dc-4ca1-81f1-215bd259fa7a"   } Data Model Create a data model called fact.dart in the lib/data/models folder. You can transform the JSON to Dart using Quicktype , and paste the code into the file. In our application, we only need id and text properties so you can delete the rest. class Fact {     String id;     String text;        Fact({       required this.id,       required this.text,     });        factory Fact.fromJson(Map json) => Fact(           id: json['id'] as String,           text: json['text'] as String,         );        Map toJson() {       final Map data = {};       data['id'] = id;       data['text'] = text;          return data;     }   } API service and API response Create a file called api_service.dart in lib/common/network folder and api_response.dart in lib/common/models. In ApiService class, we use the dio plugin to get a response from the API and the ApiResponse class to wrap all the API response structures. This way, our application’s network logic is reusable and optimized for fetching data from any API, and it’s not dependent just on a specific JSON model. class ApiResponse {     final bool success;     final T? data;     final String? error;        ApiResponse({this.success = true, this.data, this.error})         : assert(             (success && error == null && data != null) ||                 (!success && error != null && data == null),           );   } import 'package:dio/dio.dart'; import '../models/api_response.dart'; import '../../data/models/fact.dart'; class ApiService {   final Dio _dio = Dio();   final String _url = 'https://uselessfacts.jsph.pl/random.json?language=en';   Future> fetchData() async {     try {       Response response = await _dio.get(_url);       return ApiResponse(         data: Fact.fromJson(response.data),       );     } catch (error, stacktrace) {       // ignore: avoid_print       print("Exception occured: $error stackTrace: $stacktrace");       return ApiResponse(         success: false,         error: "Data not found / Connection issue",       );     }   } } State management State is data that changes in the lifecycle of our application. To track all the changes happening in our application, we require some state management solution, so it can respond to the user accordingly and track data through the dierent screens. Create a state folder in the presentation folder and bloc and state_notifier folders inside the state folder. Then create fact_bloc.dart and fact_event.dart files in bloc folder and fact_notifier.dart in state_notifier folder. For this example application, place the fact_state.dart file outside the bloc folder since Riverpod’s state notifier also responds with the same states, so we don’t duplicate the code. State As already mentioned above, the state is data that changes in the lifecycle of our application. There are five states in this project: FactInitialState , FactLoadingState , FactLoadedState , FactErrorState and FactNoInternetState . FactInitialState : The application is in its initial state, and nothing has happened yet. FactLoadingState : defines that the repository is waiting for the response from the server or is processing data. FactLoadedState : is passed, with a random fact, upon the successful data fetching. FactErrorState : is passed with an error message when something goes wrong. FactNoInternetState : is passed when there is no internet connection available. part of 'bloc/fact_bloc.dart'; @immutable abstract class FactState extends Equatable {   const FactState();   @override   List get props => []; } class FactInitialState extends FactState {} class FactLoadingState extends FactState {} class FactLoadedState extends FactState {   final Fact fact;   const FactLoadedState(this.fact); } class FactErrorState extends FactState {   final String error;   const FactErrorState(this.error); } class FactNoInternetState extends FactState {} import '../common/network/api_service.dart'; import '../common/models/api_response.dart'; import '../data/models/fact.dart'; class ApiRepository {   final _provider = ApiService();   Future> fetchFact() {     return _provider.fetchData();   } } Event Event represents that something has happened in the application. We can think of events as the input of the Bloc and states as the output. When the application receives an event, business logic gets executed, modifies our application’s state, and reflects it with some changes in the user interface. There are only two events in this application: LoadFactEvent and NoInternetEvent . LoadFactEvent is triggered when the device is connected to the internet and the button is pressed. NoInternetEvent is triggered when there is no internet connection. part of 'fact_bloc.dart'; @immutable abstract class FactEvent extends Equatable {   const FactEvent(); } class LoadFactEvent extends FactEvent {   @override   List get props => []; } class NoInternetEvent extends FactEvent {   @override   List get props => []; } Bloc In fact_bloc.dart file, we put all our business logic. On button press, LoadFactEvent is triggered, and Bloc is requesting data from ApiRepository. While the data is getting fetched, FactLoadingState is emitted, and a circular progress indicator is displayed. If data is fetched successfully, FactLoadedState is emitted, and a random fact is displayed to the user, and if not, FactErrorState is emitted, and an Error message is displayed to the user. import 'package:bloc/bloc.dart'; import '../../../data/models/fact.dart'; import '../../../domain/api_repository.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; part 'fact_event.dart'; part '../fact_state.dart'; class FactBloc extends Bloc {   final ApiRepository _apiRepository;   FactBloc(     this._apiRepository,   ) : super(FactInitialState()) {     on(       (event, emit) async {         emit(FactLoadingState());         final fact = await _apiRepository.fetchFact();         if (fact.success) {           emit(             FactLoadedState(fact.data!),           );         } else {           emit(             FactErrorState(fact.error!),           );         }       },     );   } } Riverpod Providers , as a crucial part of Riverpod, are objects that encapsulate a piece of state and allow listening to that state. We are using a StateNotifierProvider to listen and expose a StateNotifier . Create fact_state_notifier.dart file in presentation/state/state_notifier. Define a state notifier provider to implement FactState so that we can expose states. Similar to our fact bloc logic, on button press, the initial state is changed to FactLoadingState , and circular progress indicator is displayed, and data is requested from ApiRepository. If the data is fetched successfully, the state is changed to FactLoadedState , and the random fact is displayed to the user. And if not, the state is changed to FactErrorState , and an error message is displayed to the user. import 'package:bloc_vs_riverpod_example/presentation/state/bloc/fact_bloc.dart'; import '../../../domain/api_repository.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; final factsNotifierProvider = StateNotifierProvider(   (ref) => FactsNotifier(     ApiRepository(),   ), ); class FactsNotifier extends StateNotifier {   final ApiRepository _apiRepository;   FactsNotifier(this._apiRepository) : super(FactInitialState());   void load() async {     state = FactLoadingState();     final fact = await _apiRepository.fetchFact();     if (fact.success) {       state = FactLoadedState(fact.data!);     } else {       state = FactErrorState(fact.error!);     }   } } Checking internet connection continuously Using connectivity plus, we are listening to the changes in connection. Create network_cubit.dart in the presentation/state/network folder. NetworkInfoCubit depends on the connectivity plugin and can react to connection changes, so we can track if there is an internet connection on our device and emit dierent states accordingly. import 'package:bloc/bloc.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; class NetworkInfoCubit extends Cubit {   NetworkInfoCubit(Connectivity _connectivityService)       : super(ConnectivityResult.wifi) {     _connectivityService.onConnectivityChanged.listen((event) {       connectionChanged(event);     });   }   connectionChanged(ConnectivityResult result) {     emit(result);   } } bool isConnected(ConnectivityResult connection) =>     connection != ConnectivityResult.none; Pages The user interface is straightforward , just one screen with two buttons and two cards. Create a custom button, LoadFactButton , which excepts these arguments: onPressed : specifies the way of changing the state and builds the UI using Bloc or Riverpod. connected : if there is an internet connection, the button is enabled and can be pressed, and if there is no internet connection, the button is disabled and can’t be pressed. state : if the current state is FactLoadingState , a circular progress indicator is displayed while data is being fetched, and if the state is FactLoadedState , a random fact is displayed in the card. class LoadFactButton extends StatelessWidget {     final FactState state;     final Function()? onPressed;     final bool isConnected;     const LoadFactButton(         {Key? key,         required this.state,         this.onPressed,         required this.isConnected})         : super(key: key);        @override     Widget build(BuildContext context) {       return Column(         children: [           ElevatedButton(             onPressed: isConnected ? onPressed : null,             child: const Text('Load random fact'),           ),           const SizedBox(height: 25),           if (state is FactLoadingState)             const Center(child: CircularProgressIndicator()),           if (state is FactLoadedState)             FactCard(               (state as FactLoadedState).fact,             ),         ],       );     }   } Buttons appearance according to the state After creating the Bloc and implementing all the functionalities we need to provide the fact bloc to the widget tree, so we can display random facts in the cards after pressing the buttons. Wrap the Scaold with a BlocProvider , so our fact bloc is provided to its children. This way, we are initializing the Bloc before using it. Then wrap one of the LoadFactButtons with BlocBuilder so we can rebuild the UI depending on the state and pass read().add(LoadFactEvent() , as onPressed argument. For widgets to be able to read the factsNotifierProvider, wrap the entire application with ProviderScope . This is where the state of our provider will be stored. Riverpod lets us access providers, by reference and not by type . Replace StatelessWidget with ConsumerWidget , so our build method can receive an extra ref parameter and extend the _FactsState with ConsumerState , so the state has a ref object. With ref.watch(factsNotifierProvider) we watch the factsNotifierProvider’s state and with passing ref.read(factsNotifierProvider.notifier).load() as onPressed argument to second LoadEventButton we can set a new state and load the random fact. Also, wrap the entire app with a BlocProvider and pass the NetworkInfoCubit , and wrap the Scaold with BlocBuilder < NetworkInfoCubit , ConnectivityResult > so we can track network changes in our application and emit the right state accordingly. import 'package:bloc_vs_riverpod_example/data/models/fact.dart'; import 'package:bloc_vs_riverpod_example/domain/api_repository.dart'; import 'package:bloc_vs_riverpod_example/presentation/state/bloc/fact_bloc.dart'; import 'package:bloc_vs_riverpod_example/presentation/state/network/network_cubit.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import '../state/state_notifier/facts_notifier.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; class FactsPage extends ConsumerStatefulWidget {   const FactsPage({Key? key}) : super(key: key);   @override   _FactsState createState() => _FactsState(); } class _FactsState extends ConsumerState {   @override   Widget build(BuildContext context) {     final ApiRepository repo = ApiRepository();     final state = ref.watch(factsNotifierProvider);     return BlocBuilder(       builder: (context, connectivityState) {         return BlocProvider(           create: (context) => FactBloc(repo),           child: Scaold(             appBar: AppBar(               title: const Text('Random Facts'),             ),             body: Column(               mainAxisAlignment: MainAxisAlignment.center,               crossAxisAlignment: CrossAxisAlignment.stretch,               children: [                 LoadFactButton(                   state: state,                   onPressed: () =>                       ref.read(factsNotifierProvider.notifier).load(),                   isConnected: isConnected(connectivityState),                 ),                 const SizedBox(height: 35),                 BlocBuilder(                   builder: (context, state) {                     return LoadFactButton(                       state: state,                       onPressed: () =>                           context.read().add(LoadFactEvent()),                       isConnected: isConnected(connectivityState),                     );                   },                 ),               ],             ),           ),         );       },     );   } } class LoadFactButton extends StatelessWidget {   final FactState state;   final Function()? onPressed;   final bool isConnected;   const LoadFactButton(       {Key? key,       required this.state,       this.onPressed,       required this.isConnected})       : super(key: key);   @override   Widget build(BuildContext context) {     return Column(       children: [         ElevatedButton(           onPressed: isConnected ? onPressed : null,           child: const Text('Load random fact'),         ),         const SizedBox(height: 25),         if (state is FactLoadingState)           const Center(child: CircularProgressIndicator()),         if (state is FactLoadedState)           FactCard(             (state as FactLoadedState).fact,           ),       ],     );   } } class FactCard extends StatelessWidget {   final Fact fact;   const FactCard(this.fact, {Key? key}) : super(key: key);   @override   Widget build(BuildContext context) {     return Card(       child: Column(         mainAxisSize: MainAxisSize.min,         children: [           ListTile(             leading: const Icon(Icons.lightbulb),             title: Text(fact.text),           ),         ],       ),     );   } } import 'package:bloc_vs_riverpod_example/presentation/state/network/network_cubit.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'presentation/screen/facts_page.dart'; import 'package:flutter/material.dart'; void main() {   runApp(const MyApp()); } class MyApp extends StatelessWidget {   const MyApp({Key? key}) : super(key: key);   @override   Widget build(BuildContext context) {     return ProviderScope(       child: BlocProvider(         create: (context) => NetworkInfoCubit(Connectivity()),         child: MaterialApp(           title: 'Random Fact',           debugShowCheckedModeBanner: false,           theme: ThemeData(             primarySwatch: Colors.teal,           ),           home: const FactsPage(),         ),       ),     );   } } Testing Since we are focusing on state management, we are testing fact bloc and network info cubit using bloc_test package, fact state notifier using state_notifier_test package and using mockito package for creating mocks we need for testing. To use Mockito’s generated mock run build_runner with this command: dart run build_runner build Build runner generates a file with a name based on the file containing the @GenerateMocks annotation. Write some tests to verify if the logic of the fact bloc is correct or not. For example, we are testing the logic which runs upon receiving the LoadFactEvent. import 'package:bloc_test/bloc_test.dart'; import 'package:bloc_vs_riverpod_example/common/models/api_response.dart'; import 'package:bloc_vs_riverpod_example/data/models/fact.dart'; import 'package:bloc_vs_riverpod_example/domain/api_repository.dart'; import 'package:bloc_vs_riverpod_example/presentation/state/bloc/fact_bloc.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'facts_bloc_test.mocks.dart'; @GenerateMocks([ApiRepository]) void main() {   final mockApiRepo = MockApiRepository();   final fact = Fact(id: '', text: '');   blocTest(     'Block emits [] when no events are added.',     build: () => FactBloc(mockApiRepo),     expect: () => const [],   );   blocTest(     'Bloc emits [FactLoadingState, FactLoadedState] when api is fetched successfully',     build: () => FactBloc(mockApiRepo),     setUp: () async {       when(mockApiRepo.fetchFact()).thenAnswer(         (realInvocation) async {           return ApiResponse(             success: true,             data: fact,           );         },       );     },     act: (FactBloc bloc) {       bloc.add(LoadFactEvent());     },     expect: () => [       FactLoadingState(),       FactLoadedState(fact),     ],     tearDown: () {       reset(mockApiRepo);     },     verify: (FactBloc bloc) => verify(mockApiRepo.fetchFact()).called(1),   );   blocTest(     'Bloc [FactLoadingState, FactErrorState] when api is not fetched successfully',     build: () => FactBloc(mockApiRepo),     setUp: () async {       when(mockApiRepo.fetchFact()).thenAnswer(         (realInvocation) async {           return ApiResponse(             success: false,             error: 'Error',           );         },       );     },     act: (FactBloc bloc) {       bloc.add(LoadFactEvent());     },     expect: () => [       FactLoadingState(),       const FactErrorState('Error'),     ],     verify: (FactBloc bloc) => verify(mockApiRepo.fetchFact()).called(1),   ); } Write some tests to verify if the logic of the fact state notifier is correct or not. For example, we are testing the logic which runs upon calling the load() method. import 'package:bloc_vs_riverpod_example/common/models/api_response.dart'; import 'package:bloc_vs_riverpod_example/data/models/fact.dart'; import 'package:bloc_vs_riverpod_example/domain/api_repository.dar [truncated] ======================================================================== # Flutter Chat - Proof of Concept - Tech Consulting and Software Engineering URL: https://q.agency/blog/flutter-chat-proof-of-concept/ Explore Flutter chat development with Flyer Chat, including UI customisation, messaging, attachments, and Firebase integration. Flutter Chat - Proof of Concept | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Flutter Chat – Proof of Concept Flutter Chat – Proof of Concept February 18, 2022 — 12 min read Clients often can’t understand why it takes so much time to implement things that exist in almost every application? If it’s in every app, then it must be easy? In Flutter , you are trying to accelerate development by using one of the oered packages in the pub.dev oicial package repository. The first step is to choose a package that would be suitable for implementation. The choice of the package depends on the features that the package has. For example, customization of UI , prebuilt components that manage most operations like data fetching, pagination, sending a message, image and file upload, and more. Finally, I will analyze the most popular chat UI package , flutter_chat_ui. Flutter Chat UI – Flyer Chat Flyer Chat is a platform for creating in-app chat experiences using Flutter. For installation add flutter_chat_ui to your package’s pubspec.yaml. Usage You start with a Chat widget that will render a chat. In my example Chat widget is rendered like this: It has 3 required properties: messages – an array of messages to be rendered onSendPressed – a function that will have a partial text message as a parameter user – a User class StreamBuilder>(     stream: FirebaseChatCore.instance.messages(chatRoom),     initialData: const [],     builder: (context, snapshot) {       return SafeArea(                 bottom: true,                 child: Chat(                   messages: snapshot.data ?? [],                   onAttachmentPressed: _handleAtachmentPressed,                   isAttachmentUploading: _isAttachmentUploading,                   onMessageTap: _handleMessageTap,                   onPreviewDataFetched: _handlePreviewDataFetched,                   onSendPressed: _handleSendPressed,                   bubbleBuilder: _bubbleBuilder,                   user: types.User(                     id: FirebaseChatCore.instance.firebaseUser?.uid ?? '',                   ),                   showUserAvatars: true,                   showUserNames: true,                   theme: const DefaultChatTheme(                     inputBackgroundColor: Colors.black,                     backgroundColor: kSecondaryDark,                     inputTextColor: kSecondaryColor,                     inputTextCursorColor: kSecondaryColor,                     emptyChatPlaceholderTextStyle: TextStyle(color: kSecondaryColor),                     receivedMessageBodyTextStyle: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),                     sentMessageBodyTextStyle: TextStyle(color: kSecondaryDark, fontWeight: FontWeight.bold),                   ),                 ),               );       }   ) Other properties bubbleBuilder – Customize the default bubble using this function Widget _bubbleBuilder(     Widget child, {       required message,       required nextMessageInGroup,     }) {   return Bubble(     child: child,     color: FirebaseChatCore.instance.firebaseUser?.uid != message.author.id ||         message.type == types.MessageType.image         ? Colors.black         : kSecondaryColor,     margin: nextMessageInGroup         ? const BubbleEdges.symmetric(horizontal: 6)         : null,     nip: nextMessageInGroup         ? BubbleNip.no         : FirebaseChatCore.instance.firebaseUser?.uid != message.author.id         ? BubbleNip.leftBottom         : BubbleNip.rightBottom,   ); } customBottomWidget – [Widget] Allows you to replace the default Input widget customDateHeaderText – [String] If [dateFormat], [dateLocale] and/or [timeFormat] is not enough to customize date headers in your case, use this to return an arbitrary string based on a [DateTime] of a particular message customMessageBuilder – Build a custom message inside the predefined bubble dateFormat – This allows you to customize the date format dateHeaderThreshold – Time (in ms) between two messages while rendering a date header dateLocale – Locale will be passed to the `Intl` package disableImageGallery – Disable automatic image preview on tap emojiEnlargementBehavior – Controls the enlargement behavior of the emojis in the TextMessage emptyState – [Widget] Allows you to change what the user sees when there are no messages fileMessageBuilder – Build a file message inside predefined bubble groupMessagesThreshold – [int] Time (in ms) between two messages while visually grouping them hideBackgroundOnEmojiMessages – [bool] Hide background for messages containing only emojis imageMessageBuilder – [Widget] Build an image message inside predefined bubble isAttachmentUploading – [bool] Whether attachment is uploading. Will replace attachment button with a [CircularProgressIndicator] isLastPage – [bool] Used for pagination (infinite scroll) together with [onEndReached]. When true, it indicates that there are no more pages to load, and pagination will not be triggered l10n – [ChatL10n] Localized copy onAttachmentPressed – [Function()] Callback for attachment button tap event onBackgroundTap – [Function()] Called when user taps on background onEndReached – [Function()] Used for pagination (infinite scroll). Called when user scrolls to the very end of the list onEndReachedThreshold – [double] Used for pagination (infinite scroll) together with [onEndReached]. It can be anything from 0 to 1, where 0 is the immediate load of the next page as soon as the scroll starts, and 1 is the load of the next page only if scrolled to the very end of the list. The default value is 0.75, e.g., start loading the next page when scrolled through about 3/4 of the available content onMessageLongPress – [Function()] Called when user makes a long press on any message onMessageTap – [Function()] Called when user taps on any message onSendPressed – [Function()] Will be called on [SendButton] tap onTextChanged – [Function()] Will be called whenever the text inside [TextField] changes onTextFieldTap – [Function()] Will be called on [TextField] tap sendButtonVisibilityMode – Controls the visibility behavior of the [SendButton] based on the [TextField] state inside the [Input] widget. Upload media You can use the image picker package to select an image and send it as a message. For example: void _handleImageSelection() async {     final result = await ImagePicker().pickImage(       imageQuality: 70,       maxWidth: 1440,       source: ImageSource.gallery,     );     if (result != null) {       _setAttachmentUploading(true);       final file = File(result.path);       final size = file.lengthSync();       final bytes = await result.readAsBytes();       final image = await decodeImageFromList(bytes);       final name = result.name;       try {         final reference = FirebaseStorage.instance.ref(name);         await reference.putFile(file);         final uri = await reference.getDownloadURL();         final message = types.PartialImage(           height: image.height.toDouble(),           name: name,           size: size,           uri: uri,           width: image.width.toDouble(),         );         FirebaseChatCore.instance.sendMessage(           message,           context.read(chatProvider).room.id,         );         _setAttachmentUploading(false);       } finally {         _setAttachmentUploading(false);       }     } Similar to the text message, you will need to create an image message using data from the image picker. In this example, you can use a local path just for demo purposes, but you will upload the image first for the backend service and then send the received URL using the uri property. The image message renders in two dierent ways to keep the UI clean. First, if the aspect ratio is too low or too high, it renders like a file message, so you don’t see a narrow line on the UI. The second way is a classic image in the chat. Give it a try. On tap, photos will be previewed inside an interactive image gallery. To disable the image gallery, pass disableImageGallery property to the Chat widge t. Files You can use the file_picker package to select a file and send it as a message. Example: void _handleFileSelection() async {     final result = await FilePicker.platform.pickFiles(       type: FileType.any,     );     if (result != null && result.files.single.path != null) {       _setAttachmentUploading(true);       final name = result.files.single.name;       final filePath = result.files.single.path!;       final file = File(filePath);       try {         final reference = FirebaseStorage.instance.ref(name);         await reference.putFile(file);         final uri = await reference.getDownloadURL();         final message = types.PartialFile(           mimeType: lookupMimeType(filePath),           name: name,           size: result.files.single.size,           uri: uri,         );         FirebaseChatCore.instance.sendMessage(message, context.read(chatProvider).room.id);         _setAttachmentUploading(false);       } finally {         _setAttachmentUploading(false);       }     }   } Like the text message, you will need to create a file message using data from the document picker. In this example, uri will point to the local file system just for demo purposes, but you will upload the file first for the backend service and then send the received URL using the uri property. Opening file Right now, nothing will happen when a user taps on a file message, so I will need to add another dependency. I will use an open file package. Now, you can open a file: void _handleMessageTap(types.Message message) async {     if (message is types.FileMessage) {       var localPath = message.uri;       if (message.uri.startsWith('http')) {         final client = http.Client();         final request = await client.get(Uri.parse(message.uri));         final bytes = request.bodyBytes;         final documentsDir = (await getApplicationDocumentsDirectory()).path;         localPath = '$documentsDir/${message.name}';         if (!File(localPath).existsSync()) {           final file = File(localPath);           await file.writeAsBytes(bytes);         }       }       await OpenFile.open(localPath);     }   } Link preview Link preview works automatically, and it can be disabled by setting usePreviewData to false. Usually, however, you’ll want to save the preview data so it stays the same. You can do that using onPreviewDataFetched . Q Chat App (Flyer Chat) with Firebase as backend Using the chat UI, I made a simple chat application using the Flutter chat UI package. The application uses firebase as the backend. By registering the user, I can chat with other ones. I have a contacts dialog with a list of all contacts, and to start chatting, all I have to do is on the user. In addition to messages, you can send pictures and files. I just have to pick what I will be sending, a photo or file. Flutter chat with custom backend All solutions for chats can be split into two categories: 1. Ready-made chat platforms ( SendBird , GetStream.io ) They have prepared functionality for main chat options. The developer needs to put a small eort and time into adding a chat into an app. But the behavior of functionality has strict borders by the platform creator, and possibilities for customization are limited. 2. Technologies for exchanging data between client and server, such as Firebase Cloud Messaging, Socket.io. They allow building a very flexible chat solution upon them. Those technologies take time to implement but oer unlimited possibilities for customization. Firebase For implementing Firebase only for the chat functionality and using your custom backend, you can register/login users using a custom JWT token and save the received uid to the users’ table. Then you can have a screen with all users from your user’s table where each of them will have an assigned uid that will be used to start a chat. When you have access to that uid, create a room (channel) or group room and start chatting. Advantages Free for products with up to 100 simultaneous users. With comprehensive documentation and high popularity, developers can quickly find answers, which saves time and money. No need to buy an additional server. You can do everything on the Firebase server. Disadvantages The developer needs experience working with NoSQL to build a convenient and eective database structure. Complex search inquiries still pose a bigger problem than those in SQL databases or NoSQL databases like MongoDB. Some are impossible, and others will take much more time to develop. Socket.IO Advantages Server platform Node.js, going with the real-time data exchange library Socket.io helps build a chat with unlimited customization possibilities. The developer has complete control over all components: interface, logic, and server data. An endpoint can be whatever is needed. In the future product, you will see many complex search inquiries, and you can choose the SQL database instead of using Firestore . Client and server exchange messages directly, resulting in fast work. When you use Firebase Cloud Messaging, the message goes from your server to the Firebase server, and only from there will it travel further to the device. It’s important to mention that if there is a 0,5s delay, it’s not critical for a text chat. But, again, open-source, free solution – you don’t have to pay monthly for this technology. Disadvantages The only disadvantage is that it requires more time and money, as the developer creates all functions from scratch. Links: socket.io packages Sendbird Advantages Sendbird is a ready-made chat platform. It oers many prepared features, including an indication of the number of unread messages, blocking users, and admin dashboard. Many features are already realized and work right away: message or file exchange, invitations, users blocking, typing indication, editing messages, automatic translation, admin dashboard, group chats for up to 100 users. Disadvantages Chat and functionality behaviors are strictly set. A user logs in and gets access to a list of channels. They can choose an existing channel or create their own. Tracks are either public or private. Users can exchange messages in either one. This is the standard structure for the majority of chats. If you need something more exotic for your product, it will be problematic to realize that with SendBird. Not as popular as Firebase and Socket.io. The price depends on the number of users. The base package costs $400 monthly for 5k active users. With 100k active monthly users, the price will increase to $5000. . Links: sendbird packages GetStream.io The Flutter SDK lets you build any chat or messaging experience for Android, iOS, Web, and Desktop. It consists of 4 packages : stream_chat : A pure Dart package that can be used on any Dart project. It provides a low-level client to access the Stream Chat service. stream_chat_flutter_core : Provides business logic to fetch everyday things required for integrating Stream Chat into your application. The core package allows more customization and provides business logic but no UI components. stream_chat_flutter : This library includes a low-level chat SDK and a set of reusable and customizable UI components. stream_chat_persistence : Provides a persistence client for fetching and saving chat data locally. Advantages Integrated reply in their SDK: Giphy, emoticons and file attachments Threads links Search in messages and conversations Video playback Online statuses Disadvantages Although it has almost all the functionality for chat, same as Sendbird, there may be a problem if you need something specific. Also, high price (4 99 USD/month ). Links: Getstream packages Conclusion Before I conclude, I need to consider which solution is the best. For example, does my chat require minimal functionality, or do I need something more advanced? Ready-made solutions, which I analyzed, oer a wide range of functionality, and with them, you can do almost anything a chat should have. But the most significant disadvantage is that these platforms are not free . Also, if you have some specific functionality that the platform does not oer, you still have to opt for some custom solutions like Socket.io. With Socket.io you have complete freedom to achieve full customization, but you will have to develop from zero, and it takes time. The conclusion is that if your chat requires a minimum base functionality and you don’t have a high level of requirements to it, Firebase Cloud Messaging-based solution is the way to go. On the other hand, if you need a quick implementation and money is not an issue, Sendbird or GetStream.io is a perfect solution. But if there are a lot of requirements for a chat or you need lots of customized options, Socket.io is your friend. See Links: hackernoon ; flyer chat Mario Otmacic I am Flutter developer in Q agency. Ever since I started working with Flutter two years ago, I am really enjoying building apps with it and exploring different features in Flutter environment. Musician, I play drums in band, and I am father of three. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 18, 2022 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 18, 2022 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Flutter Push Notification Actions: How to Implement Them on iOS and Android - Tech Consulting and Software Engineering URL: https://q.agency/blog/flutter-push-notification-actions-how-to-implement-them-on-ios-and-android/ This article will dive into Flutter push notification actions and show you how to implement them on both iOS and Android. Flutter Push Notification Actions: How to Implement Them on iOS and Android | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Flutter Push Notification Actions: How to Implement Them on iOS and Android Flutter Push Notification Actions: How to Implement Them on iOS and Android September 3, 2026 — 12 min read This blog post will help you implement push notification actions on iOS and Android to increase user engagement with your Flutter application using Firebase Messaging You’ll learn how to configure actionable notifications on both platforms and handle user interactions within your Flutter application. Table of content: Prerequisites Introduction to Push Notification ctions Types of Push Notification Actions Android Setup iOS Setup Flutter Setup Testing the Notifications Conclusion 1. Prerequisites Before we get started, make sure you already know how to implement push notifications in Flutter as we are not going to cover the basics as there are plenty of tutorials for it readily available. If that is not the the case, Firebase Messaging documentation is available here and the full example repository is available on GitHub . 2. Introduction to Notification Actions You may already be familiar with notification actions in some form or another with examples including WhatsApp’s reply from notification, accepting an invitation from the notification button without opening the app or straight up deleting an email with a tap of a button. The purpose of those actions is to increase user engagement, enhance user convenience using the application and provide contextual actions based on the push notification itself. When talking in the context of Flutter we will reference non-destructive and reply actions. Material design guidelines do not have a separate visual to differentiate between destructive and non-destructive unlike iOS which can be made to show a destructive action in notification action Images showing various examples of notification actions. With iOS showing destructive action in red while Android does not differentiate between them as it does not exist within Material Design guidelines. Left – iOS, Right – Android 3. Types of Push Notification Actions There are 2 common types of actions as of January, 2026, they are as the title suggests: non-destructive, reply Non-destructive action refers to an action that does not alter data in a “meaningful” way, can be easily reversible and generally safe to tap by accident. An example would be accepting a friend request or accepting an invite to a meeting. Reply is an action that allows for user interaction in the form of a textfield that allows custom input from users. A good example is reply to a Whatsapp message from notification without opening the application. (iOS only) Destructive action refers to an action that is, as the name suggests, destructive. That means deletion of data or actions that would impact the user in a more meaningful way. Delete or unsubscribe would be examples of such actions. Image showing various examples of notification actions with user tapping reply and an open keyboard with textfield for custom input. Left – iOS, Right – Android 4. Android Setup The entire Android setup can be skipped on the native side and be implemented through the flutter_local_notifications package as the background handler from Firebase Messaging works on android to create a local push notification and handle the rest from there which is easier to implement but we will show how to do it natively on Android and later on in Swift. We will start by creating a notification channel called High importance channel with the id high_importance_channel. For this blog we will focus on creating one custom channel that we will be using. object NotificationChannels { const val CHANNEL_HIGH_IMPORTANCE_ID = "high_importance_channel" fun createHighImportanceNotificationChannel(context: Context) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return val highImportanceChannel = NotificationChannel( CHANNEL_HIGH_IMPORTANCE_ID, "High importance channel", NotificationManager.IMPORTANCE_HIGH ).apply { description = "High importance notifications" enableLights(true) enableVibration(true) setShowBadge(true) } val nm = context.getSystemService(NotificationManager::class.java) nm.createNotificationChannel(highImportanceChannel) } } Image showing high importance channel in app settings, average amount of notifications together with permissions for the said channel and options to turn them on or off. Next up, we have created the actual actions that we want to show and as mentioned before on Android we have 2 main types: non-destructive and reply actions but for the sake of consistency we will include the 3rd option to simulate our destructive action. object NotificationActions { const val ACTION_ACCEPT = "ACTION_ACCEPT" const val ACTION_DECLINE = "ACTION_DECLINE" const val ACTION_REPLY = "ACTION_REPLY" ... } To avoid long code snippets, a full file can be found on GitHub . This points to the exact file where we define our actions on Android. There will be quite some amount of new keywords and terms which won’t be covered in this blog as it’s extensive enough for beginners. Each action is set up to open the MainActivity ( Flutter application ) where we will handle the action. The basics won’t cover background handling of notification actions and instead will open the Flutter application where we handle the actions After actions have been set up we need to create a service that will receive notifications and allow us to build a new notification injecting actions depending on what we need and in this case we will be sending data payload containing “category” key to build our notification. class NotificationHelperService : FirebaseMessagingService() { override fun onMessageReceived(remoteMessage: RemoteMessage) { super.onMessageReceived(remoteMessage) buildNotification(remoteMessage) } ... } Create a NotificationHelperService extending FirebaseMessagingService and pass the RemoteMessage to our custom buildNotification function and add the service to your AndroidManifest to allow Android to use our custom service for firebase messaging intents: fun buildNotification(remoteMessage: RemoteMessage) { val defaultChannel = "high_importance_channel" val notificationIdToUse = newNotificationID() val category = remoteMessage.data["category"] when (category) { "ACTIONS_CATEGORY" -> showNotificationActionCategory(remoteMessage, defaultChannel, notificationIdToUse) else -> showNotificationDefault(remoteMessage, defaultChannel, notificationIdToUse) } } buildNotification function takes RemoteMessage as a parameter and uses the “category” key from data payload to construct the notification to show: fun showNotificationActionCategory(remoteMessage: RemoteMessage,channelId: String = "misc",notificationIdToUse: Int) {    val notificationBuilder = NotificationCompat.Builder(this, channelId)        .setSmallIcon(R.drawable.q_agency)        .setContentTitle(remoteMessage.data["title"] ?: "No Title")        .setContentText(remoteMessage.data["body"] ?: "No Body")        .setContentIntent(contentPendingIntent(remoteMessage,...))        .setPriority(NotificationCompat.PRIORITY_DEFAULT)        .setAutoCancel(true)        .addAction(NotificationActions.accept(this,notificationIdToUse))        .addAction(NotificationActions.reply(this,notificationIdToUse))        .addAction(NotificationActions.decline(this,notificationIdToUse))    notify(notificationBuilder,notificationIdToUse) } showNotificationActionCategory that we use to build and show a notification if the category matches “ACTIONS_CATEGORY”. Notification is built using the RemoteMessage by reading the data payload and setting the content title and text/body respectively. Near the bottom actions are injected using .addAction and in this case we are adding all 3 created actions. Clicking on the notification body results in opening the Flutter application without action and dismissing the notification. Full file available on GitHub . We are almost done setting up Android. What remains is wiring everything up by processing the intents we created and sending them to Flutter via MethodChannels for processing. Full file available on GitHub . Flutter side will be shown later in the Flutter section after finishing up the iOS setup. 5. iOS Setup We will follow a similar approach on iOS as we did on Android. Like Android, the native declaration of actions and categories can be set up using flutter_local_notifications package. Unlike Android, iOS does not have notification channels. Start by declaring the actions and the category identifiers that we will later use to set up the category. static let actionAccept = "ACTION_ACCEPT" static let actionDecline = "ACTION_DECLINE" static let actionReply = "ACTION_REPLY" static let actionsCategoryIdentifier = "ACTIONS_CATEGORY" With the actions and category declared we can move onto creating the actions that will be used to create our “ACTIONS_CATEGORY”. Each action is declared as UNNotificationAction and contains an identifier we declared earlier, title and options. Options can be: .foreground – brings the application to foreground . .destructive – visual cue for the user that the action will delete or alter data; iOS marks destructive actions with red text, no visual change on Android as of August. 2026 . .authenticationRequired – as the action can be handled in the background, the action can be marked with authentication required so the user is required to unlock his phone before the action can proceed. This blog covers the case of .foreground where we handle the rest inside our Flutter application. let acceptAction = UNNotificationAction( identifier: actionAccept, title: "Accept", options: [.foreground] ) let declineAction = UNNotificationAction( identifier: actionDecline, title: "Decline", options: [.destructive, .foreground] ) let replyAction = UNTextInputNotificationAction( identifier: actionReply, title: "Reply", options: [.foreground], textInputButtonTitle: "Send", textInputPlaceholder: "Type your reply…" ) The category itself is declared as UNNotificationCategory, for simplicity we will only cover identifiers and actions. let actionsCategory = UNNotificationCategory(    identifier: actionsCategoryIdentifier,    actions: [acceptAction, replyAction, declineAction],    intentIdentifiers: [], // ie. "INSendMessageIntent"    options: [] // ie. .allowInCarPlay ) For the entire setup refer to the GitHub file linked here — full file available on GitHub . That is enough setup to get the actions on iOS. What remains is intercepting the notification and saving the actionIdentifier as FirebaseMessaging does not support actions. What we will do is intercept the notification, extract the data and save the actionIdentifier for later to read it inside our Flutter application. In our AppDelegate.swift inside didFinishLaunchingWithOptions, we tell iOS to setup categories we added earlier and assign our NotificationHelperService as the notification delegate to intercept notifications. let center = UNUserNotificationCenter.current() center.setNotificationCategories(NotificationActions.notificationCategories()) center.delegate = NotificationHelperService.shared To avoid copy-pasting the entire service, please refer to the GitHub . The following function gets the notification as a UNNotificationResponse where we read the following information and what we are mostly interested in is actionIdentifier which is the same String we declared earlier, ie. “ACTION_ACCEPT. If a user clicks on the notification body without triggering the action, the actionIdentifier will be “UNNotificationDefaultActionIdentifier” func userNotificationCenter( _ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void ) { let actionIdentifier = response.actionIdentifier ... } To avoid checking for that later in the Flutter we can just default the action to nil before saving it: let action: String? = (actionIdentifier == UNNotificationDefaultActionIdentifier) ? nil : actionIdentifier To cover the reply action, we need a separate check: var replyText: String? = nil if let textResponse = response as? UNTextInputNotificationResponse { replyText = textResponse.userText } After extracting all the data from response, save it to a Map called payload that will either get sent to our methodChannel if the application is opened, or save as a pendingOpenPayload waiting to be distributed after the Flutter application calls the “getInitialNotification” method: let payload: [String: Any?] = [ "action": action, "reply": replyText, ] For further information on MethodChannels in Flutter, consult the official Flutter documentation on platform channels: https://docs.flutter.dev/platform-integration/platform-channel . 6. Flutter Setup Now that we have native side setup, head over to the main.dart and prepare the MethodChannels implementation. To handle the initial notification, invoke the earlier created channel and handle the result: const MethodChannel _nativeNotificationChannel = MethodChannel('agency.q.push_notifications_example'); And now call _nativeNotificationChannel’s invoke method with the name you declared. To avoid checking for platform, it’s setup as “getInitialNotification” on both Android and iOS: _nativeNotificationChannel.invokeMethod('getInitialNotification').then((result) { if (result != null) { final Map? payload = (result is Map) ? Map.from(result) : null; final display = _payload(payload); _handleNotificationAction(display); } }).catchError((e) { // Handle error }); This takes care of the initial notification, where the application is brought up from the background, either terminated or paused. To capture the events in foreground, we will make use another method by setting up a MethodCallHandler: _nativeNotificationChannel.setMethodCallHandler((call) async { if (call.method == 'onNotification') { final args = call.arguments; final Map? payload = (args is Map) ? Map.from(args) : null; final notification = _payload(payload); _handleNotificationAction(notification); } }); Every time our native code invokes onNotification we get an event inside that we process inside _handleNotificationAction. Full code can be found on GitHub . 7. Testing the Notifications To test the newly set up notifications. Head over to the Google OAuth Playground . Under “Select & authorise APIs” go to the “Input your own scopes” and type in “ https://www.googleapis.com/auth/firebase.messaging ” and click Authorise APIs . After Authorisation with Google tap on the “Exchange authorisation code for tokens” to get a valid access token for 3600 seconds. My preferred way of testing API’s is using Postman, available here . To send a notification using Postman, use the earlier access token received from Google OAuth Playground as a bearer token. Request URL corresponding to your Firebase project: “https://fcm.googleapis.com/v1/projects/”your-project-id”/messages:send” For the body of the request we need to have a distinction between how Android and iOS handle the notification using Firebase Messaging. For this blog we can use a simple payload: { "message": { "token": "", "apns": { "payload": { "aps": { "alert": { "title": "Hello from postman" }, "sound": "default", "category": "ACTIONS_CATEGORY" } } }, "android": { "notification": { "channel_id": "high_importance_channel" }, "data": { "category": "ACTIONS_CATEGORY", "title": "Hello from postman", "body": "Notification body" } } } } For Android it’s important to omit the “notification” as it will make the system create a notification of its own ignoring the category. In both payloads, you can see our “ACTIONS_CATEGORY” field that we set up, and that allows us to connect the actions to notifications. Android takes a string from our custom data field and parses it as a category, then shows our notification by appending custom actions we set in our switch case, whereas iOS takes category parameters directly and shows the notification with system registered actions. 8. Conclusion Flutter greatly simplifies development by allowing a single codebase to target multiple platforms. However, some challenges still require an understanding of the technologies and concepts specific to each platform in order to achieve the best results. This blog post was written in August 2026. At the time of writing, firebase_messaging does not provide an out of the box solution for implementing notification actions in Flutter so we have to come up with a solution to the problem. However, by leveraging native platform APIs and bridging them to Flutter through method channels, it is possible to implement notification actions and handle them within the Flutter application . Zvonimir Babic Zvonimir is a Mobile developer at Q Agency. Also known as Zvone, he is interested in mobile technologies such as Flutter, Android and iOS. When not working you'll find him spending time hiking and travelling. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 3, 2026 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 3, 2026 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Flutter Web: Best Practices & Ideal Project Scenarios - Tech Consulting and Software Engineering URL: https://q.agency/blog/flutter-web-best-practices-ideal-project-scenarios/ Unlocking Flutter Web's potential: a guide to best practices and strategies for crafting standout web applications using Flutter. Flutter Web: Best Practices & Ideal Project Scenarios | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Flutter Web: Best Practices & Ideal Project Scenarios Flutter Web: Best Practices & Ideal Project Scenarios November 8, 2023 — 10 min read Unlocking Flutter Web’s potential: a comprehensive guide to best practices, project suitability, and strategies for crafting standout web applications. Flutter , created by Google, has changed the way we think about app development. At first, it was all about making mobile apps —  one set of code could work on many devices. But Flutter didn’t stop there. Flutter has already made its mark in the world of web development. Developers have the capability to craft websites with Flutter that are both visually appealing and efficient. The highlight? They achieve this using the Flutter tools with which they’re already familiar. In this guide, we’ll take a closer look at how Flutter is making waves on the web. We’ll explore its features , the challenges , and why it’s becoming a top choice for web developers everywhere. Transitioning from Mobile to Web with Flutter Moving from mobile to web development might seem like a big step. But with Flutter , it feels more like a small step. Why? Because a lot of what you know from using Flutter for mobile still applies. The foundation, like the Dart language and the way you use widgets, stays the same. But, there are some new things to think about. On mobile, you’re usually designing for a few standard screen sizes. On the web, it’s a different game. Websites need to look good on everything, from a tiny phone screen to a big desktop monitor. This is where the idea of responsiveness comes in. It means making sure your website adjusts and looks great no matter the screen size. Flutter offers tools to help with this. But, like anything new, there can be challenges. Different web browsers might show your site a bit differently. So, it’s important to check and make sure everything works smoothly across the board. In this section, we’ll dive deeper into the journey of using Flutter for the web and share some tips to make the transition smoother. Flutter’s Growth: A Deep Dive into Web Capabilities Flutter, an open-source technology backed by Google, has been a game-changer in the app development landscape. Initially recognized for mobile app development, its journey into web development has been transformative, challenging the native vs. cross-platform debate. Flutter’s Continued Dominance in Cross-Platform Development Flutter has consistently stood out in the cross-platform development realm. Its unique proposition of a unified codebase for diverse platforms, including Android, iOS, and the web, has been a game-changer. From its inception to 2021, Flutter’s adoption among cross-platform developers witnessed a significant rise from 30% to 46%. With the insights from 2023, it’s evident that Flutter’s popularity is not just a fleeting trend. Its adoption rate is poised to climb even higher, especially with the innovations brought by Flutter 3. Major industry players like eBay and Alibaba Group have already embraced Flutter, underscoring its potential and reliability in the app development world. Performance and Stability A standout feature of Flutter is its impeccable performance and stability. Apps developed with Flutter often outperform those made with other cross-platform frameworks in terms of speed, responsiveness, and resource utilization. Versatility Across Platforms Flutter’s versatility is evident in its support for both mobile and desktop platforms. While it was already a robust framework for iOS and Android, it has supported Web since 2.0 release and the latest version extends its capabilities to desktop platforms like Windows, Linux, and macOS. This means applications can now be developed for all these platforms from a single codebase, leading to significant time and cost savings. Flutter’s versatility shines through its expansive support for various platforms. Initially a robust framework for iOS and Android, its capabilities were further broadened with the release of Flutter 3 on 11th May 2022. This update enabled developers to craft applications for desktop platforms, specifically Linux and macOS, using the same codebase. Consequently, this evolution allows for substantial time and cost efficiencies, as applications can now cater to mobile and these desktop platforms seamlessly. Embracing Native Features Despite being a cross-platform framework, Flutter does not restrict developers from integrating platform-specific features. It offers a plethora of widgets tailored for Android, iOS, Windows, macOS, and Linux. Moreover, it allows third-party integrations and APIs using various programming languages, ensuring that native features can be seamlessly incorporated without compromising performance. User Interface Excellence One of the challenges in cross-platform development has been crafting user interfaces that feel native to each platform. Flutter has effectively addressed this challenge, offering tools that allow developers to harness platform-specific features and capabilities. As a result, apps developed with Flutter often “feel like native,” bridging the gap between cross-platform and native development. The Power of Dart At the heart of Flutter’s success is the Dart programming language. Dart, which is client-optimized and object-oriented, has garnered a vast community of enthusiasts over the years. Its simplicity and efficiency, especially for those familiar with Javascript, have played a pivotal role in Flutter’s widespread adoption. Flutter’s evolution over the past few years underscores its potential and versatility. As it continues to grow and adapt, it offers developers a powerful toolkit to craft efficient, responsive, and visually appealing applications across platforms. Challenges in Flutter Web Development Flutter Web, while revolutionary in bridging the gap between mobile and web applications, does present its set of challenges. Developers venturing into the Flutter Web realm often encounter a spectrum of technical hurdles. Here’s an enumeration of the common challenges: Performance Concerns Code Size Concerns: Flutter Web applications tend to have a larger initial footprint compared to those crafted with conventional web technologies. This can result in extended initial load times, particularly impacting users with limited internet speeds. However, it’s worth noting that after this initial load, Flutter’s performance is on par with other Single Page (SP) applications. Animation Fluidity: While Flutter is renowned for smooth animations on mobile, replicating the same fluidity on web platforms can sometimes be challenging. SEO Optimization Flutter Web’s nature as a single-page application can pose challenges for search engine optimization. Dynamic content rendering might not always be as SEO-friendly as static content. Browser Compatibility Ensuring consistent behavior and appearance across various browsers is crucial. While Flutter Web aims for cross-browser compatibility, discrepancies can arise, especially with less popular or older browsers. Achieving uniform behavior and appearance across diverse browsers is paramount. Flutter Web, not relying on CSS, often exhibits more consistent behavior across different browsers. However, some variations might still occur, particularly with less mainstream or dated browsers. Package Limitations The Flutter ecosystem is vast, but not all packages are optimized for web development. Some mobile-centric packages might not function as expected on the web, necessitating workarounds or alternative solutions. While Flutter Web offers a plethora of advantages, it’s essential for developers to be cognizant of its challenges. By understanding these hurdles and actively seeking solutions, developers can harness the true potential of Flutter Web, crafting applications that are both functional and user-friendly. Mastering Flutter Web: Tips & Best Practices Flutter Web is revolutionizing the way developers approach web applications. To make the most of this powerful framework, it’s essential to be equipped with the right tips and best practices. Here’s a guide to help you navigate the intricacies of Flutter Web: Optimize for Performance: State Management : Efficiently manage the state of your application using packages like Provider or Riverpod . This ensures a responsive user experience and minimizes unnecessary widget rebuilds. Efficient Data Fetching : Use packages like dio or http for asynchronous data fetching, and consider caching mechanisms to reduce redundant network calls. Asset Handling : Utilize the flutter_svg package for SVG images, ensuring high-quality visuals with reduced file sizes. Design with Responsiveness in Mind: Responsive Frameworks : Consider using packages like flutter_screenutil or responsive_framework to ensure your UI scales seamlessly across devices. Breakpoints : Define clear breakpoints for different screen sizes, ensuring your layout adjusts gracefully from mobile to desktop views. Maintain UI Consistency: Global Theming : Utilize Flutter’s ThemeData to define global styles, ensuring a consistent look and feel throughout your application. Custom Widgets : Create reusable custom widgets for elements that appear frequently in your app, ensuring consistency and reducing code redundancy. Stay Updated & Engage with the Community: Flutter Releases : Keep an eye on Flutter’s official releases and update your application to leverage the latest features and optimizations. Community Engagement : Join Flutter forums, attend webinars, and engage with the community on platforms like Discord or Reddit. This provides insights into common challenges and emerging best practices. Implementing Flutter Web requires a blend of technical know-how and best practices. By focusing on performance, responsiveness, navigation, UI consistency, and testing, developers can craft web applications that stand out in the crowded digital landscape. Stay curious, keep learning, and let your Flutter Web projects shine! Flutter Web’s Ideal Use Cases and Limitations Flutter Web shines in creating interactive portfolios , business websites where a unified codebase with mobile is beneficial. Its widget-based architecture ensures visually appealing and responsive sites. However, for web applications requiring advanced browser functionalities, traditional web frameworks might be more suitable. While Flutter Web offers a robust platform for web development, like any framework, it’s essential to evaluate its fit based on specific project requirements , especially when dealing with intricate real-time applications or unique browser API integrations. In essence, while Flutter Web is a game-changer for many projects, it’s essential to evaluate its fit based on the project’s complexity and requirements. Flutter’s Upcoming Innovations During the Flutter Forward event broadcasted from Nairobi, Kenya, the Flutter team unveiled some of their future plans for the framework. These plans encompassed a range of advancements, including: Enhanced Graphics Performance : Flutter aims to provide cutting-edge graphics performance, ensuring visually stunning and smooth applications. Seamless Integration : The team is working on ensuring that Flutter offers seamless integration capabilities for both web and mobile platforms. Support for New Architectures : Flutter is gearing up to provide early support for emerging architectures, ensuring it remains at the forefront of technological advancements. Element Embedding : One of the standout features previewed during the event was “Element Embedding.” This feature is transformative for web developers as it allows Flutter content to be integrated into any standard web
. When utilized in this manner, Flutter essentially becomes a web component. This means it integrates seamlessly with the web’s Document Object Model (DOM) and even permits the styling of the parent Flutter object using CSS selectors and transformations. Conclusion Flutter Web is making a big splash in the world of web development. Its ability to use one set of code for different platforms, combined with its great design tools, has caught the attention of many developers. But, like all tools, it has its ups and downs. It’s important for developers to know these and stay updated as Flutter keeps changing and getting better. The future looks bright for Flutter with new features and improvements on the horizon. If you’re thinking about web development, now might be a great time to dive into the world of Flutter Web and see what it can offer. Adrijan Omicevic Adrijan, a seasoned Flutter developer at Q agency, balances his tech expertise with a passion for sports during his off-screen moments. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 8, 2023 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 8, 2023 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # FlutterFlow - Develop an App Using No-Code Approach - Tech Consulting and Software Engineering URL: https://q.agency/blog/flutterflow/ How to develop an app with the FlutterFlow approach FlutterFlow - Develop an App Using No-Code Approach | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > FlutterFlow – Develop an App Using No-Code Approach FlutterFlow – Develop an App Using No-Code Approach June 29, 2022 — 7 min read No-code technology is a new trend in the software development world which has its market traces back to 2011. However, the name low-code was first introduced in 2014. Low-code/no-code is a software development approach that requires little or no coding to build applications and processes . Instead of using complex programming languages, you can employ visual interfaces with basic logic and drag’n drop capabilities in a low-code development platform. Benefits and limitations of using No-code approach Using a no-code approach for developing applications has some great benefits compared to classical coding approaches, but of course, there are high limitations to using no code. In developing applications, I experienced both the positive and negative sides of low-code technology. Some benefits of using a no-code approach are: Improved agility – the application will work on multiple devices by setting up only one project. Decreased cost – this was not something that occurred in my situation, but time is money, and you can fast develop simple complete functionality applications) Higher productivity – by dedicating only a few hours a day, everyone can become a no-code developer and start developing no-code applications. Of course, like nothing in life, no-code is not perfe ct . There are some hard limitations that all who want to have a no-code application must be aware of primarily. I have faced a few of them, which were annoying at some points. Flexibility does not exist – developing applications is pretty straightforward, and there is no way of adding some “custom” features into no-code applications. (At least I didn’t find a way to do it) Adding new features – when you think the application is finished in total, you start doing QA by yourself, and new features come to your mind, you add that feature (at least you think you did it), you run the application, and surprise surprise 86 other things are suddenly broken. Beta versions of platforms – I have used FlutterFlow and Honeycode for no-code development. No-code reservation app For developing a no-code application , I have been using two different platforms. One is Honeycode, provided by Amazon, and the other one is FlutterFlow . Honeycode is much easier to use than FlutterFlow , but Honeycode has much fewer features than FlutterFlow, so I have built a Reservations app in FlutterFlow. How does Flutter Flow work? Flutter Flow is based on the “classic” coding approach, and you have to set UI , set database, set logic, and add rules (rules represent backend in no-code) and so one whit one exception – you don’t write code like developers usually do. So this is a short introduction to FlutterFlow. Widgets Like in Flutter itself, in flutter flow, everything is based on Widgets Widget tree A widget tree is used for a better overview of what is going on in which block of the app and for a clear perception of the flow Custom components – for signing in with a Google, Apple, or Facebook account Firebase – database of the app Actions on components – What a particular component will do when pressed Also, Flutter Flow has a great Preview of the application, which means you can see how your application will look on a device in the real world. That gives you (as a developer) the possibility to be in the overview of real-time situations that are going on with your application. The preview feature is easy because you only press a button that says – z . It pretty much looks like the Xcode simulator but in a browser. How the preview works, you will be able to see later on this blog. Furthermore, there is also a possibility to access the developer menu where you can see code that is automatically generated while you are building your application (every drag and drop component which is placed in app is generating code), you can push to GitHub repository because FlutterFlow has git integration, and also you can directly download code so you can build applications in a traditional way of building applications in Flutter. GitHub integration FlutterFlow supports a feature where you can connect your FlutterFlow project with GitHub with a few simple steps. 1) It would be best if you created a new GitHub repository (a private repository is recommended) 2) Once the repository is created, you need to go back to Settings and integrations and install the FlutterFlow GitHub App page. 3) You can choose which repositories you want to integrate FlutterFlow – one you have created in 1st step. 4) In FlutterFlow, you need to “Associate Repo,” in FlutterFlow, and their full repository URL needs to be pasted. 5) After Associating the repository, you need to push your project to the GitHub repository, a pop-up will appear, and you will need to enter a message for this commit. 6) Once all of the steps before are completed, for the last step, you will need to press the “Push” button , and that’s it. You set up your FlutterFlow repository successfully! Once the FlutterFlow repository has been set up it will look like this: For instance, I will show a comparison with the classic Flutter project in the following figure, so please look at the following picture to compare the difference between files from FlutterFlow and Flutter. Application overview 1) On your first opening of this application Splash screen from the picture below is waiting for your following action. Will it be log-in or sign-up? 2) If you select Register , you will have to fill all of the required fields on that screen to make an account, will have to do this when you are opening the application for the first time. 3) Log in. 4) Last but not least, you are redirected to a page where you can select floor , workspace , and the date and look at where workspaces are on the floor that you have chosen (pages for 2nd and 3rd floor that look just like this for the 1st floor). Conclusion Do I like no-code app development? I would say yes, I do. But is it ready to be used in the business world? I think not, at least not yet, because there are a lot of weaknesses in using no-code application development. But I would say that the market is ready for this kind of revolution; there is a lot of space for improvement for every no-code development platform I used while working on my reservations app . There is a big problem when you think of an app, you build an app, and then the client says something like, “Yeah, this is great but can you also add this feature?” and one feature after another, what was initially a straightforward app becomes something complicated that you are unable to do because of limitations on the platform itself. So there is another question which is – can somebody who doesn’t have experience with coding build a no-code application? I can say that I am that kind of person because I come from a more hardware-oriented background with poor coding skills, and I have been using this opportunity to build my first application in a no-code way. But as much as I have seen in the process of developing this application , someone who is a non-tech background with few tutorials and few hours of dedication to learn some new skills could quickly build a simple no-code application in Honeycode . Still, for FlutterFlow, you need to have at least some perception of how does flowchart work, and it is important to have some logical thinking about what is going on behind the screen in the application. This was a great and fun way to learn some new skills, and I am happy to see what the future will bring to us with no-code development. Patrik Pralas Patrik is a tech enthusiast who likes to explore new things and take on new challenges! He recently become a new mobile team member at Q agency after working for a year in a Support department as a Technical support engineer. Outside of work, he is studying Computer & Embedded Systems Software Engineering at Zagreb university of applied science. He finished his bachelor's degree in Electrical engineering. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 29, 2022 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 29, 2022 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Formik VS Final-Form VS React-Hook-Form - Tech Consulting and Software Engineering URL: https://q.agency/blog/formik-vs-final-form-vs-react-hook-form/ Forms are basically an essential part of many websites and apps. As with everything related to the JS there are many options to choose from. Formik VS Final-Form VS React-Hook-Form | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Formik VS Final-Form VS React-Hook-Form Formik VS Final-Form VS React-Hook-Form January 26, 2026 — 7 min read Forms are basically an essential part of many websites and apps. As with everything related to the JS there are many options to choose from. Doing forms in React should be easy and painless, which means input validation and form state management should be easily doable. With minimal performance hits, of course. Since React is just a UI library it doesn’t come with a form solution out of the box. Choosing the right form library can be a tricky issue, as there are numerous ones to choose from. And of course, that means reading all of the unnecessary documentation related to each one. This blog will compare three that are mostly used in React world. The Technical Part A lot of times when a developer needs to choose an external lib for something he will check for performance issues, speed, size, etc. Let us check some numbers! First of all, download statistic . Number of downloads in the last 6 months Formik is still number one, as far as downloads are concerned. React-hook-form is neck to neck with Formik. And last, the Final Form, which is not popular as the two above. Check the picture below for more detailed stats. Based on these stats React-Hook-Form leads in most areas. It is regularly updated, has fewer open issues, the build is pretty small, and most importantly, it has no dependencies. Why is this important? Well, generally, the fewer dependencies, the better. That means that your lib isn’t dependable on any other source. Best way to describe this is with the (now) famous “left-pad” disaster . The author removed his lib from npm and basically broke the internet with that (file with 11 lines of code). So, if your lib doesn’t depend on any other, you are safe from situations like this. More detailed information about libs Installation is pretty simple and straightforward for all of them. You can use npm or yarn for adding depth to your application. npm install formik | react-hook-form | final-form react-final-form --save Formik Before starting with Formik , let us see what is the main difference between Formik and other libs. Formik is using controlled components (inputs). Controlled component is a component that gives control of changing the value to the library itself (React is guided by the principle “the state is the single source of truth”). In controlled components, every time the user changes the input value, the form is also updated and it saves the data in its state. Formik uses its own components like and
to render UI. will by default show element, but it is configurable with params. Check the docs for more information. Formik also provides component that is used as a wrapper for included form. You can pass props like initialValues, validate, onSubmit etc. Basic structure with Formik Formik uses Form-level validation. This is useful because you have complete access to all of your form’s values and props whenever the function runs, so you can validate dependent fields at the same time. Validation with Formik also needs to be explicitly developed and applied to each input, or through the help of validation libraries like Yup . Formik accepts either validation prop, or validationSchema prop, depending on what is being used to validate. Check here on GITS . The biggest drawback Formik has is that on every change it re-renders the whole form, which can significantly impact performance. If the Form is smaller in size, this may not cause significant issues, but on a bigger form, this could impact application performance. React is all about composition, and all of the label, , and components shouldn’t be copied. With Formik (and other libs) abstraction is an option. Formik uses a hook called useField that will pass all of the props to a new component . React-Hook-Form By the definition of its author, React-Hook-Form is “Performant, flexible and extensible forms with easy-to-use validation.” lib is used for creating dynamic and preformant forms in React and React Native. As the name suggests it was built when React version 16.8 (2018) was introduced, so it’s relatively newer and was built to leverage the power of React hooks. As such, in terms of performance, it beats all others. Because it uses React Hooks every state is isolated which results in re-rendering kept to the minimum. This could come in handy when creating complex forms with a lot of user data. Also, since this was built with React Hooks, it means that class-based React is out of the picture. Basic validation with React-Hook-Form As you can see in the above snippet, the code is quite readable (if you understand hooks, naturally ). It uses ref to handle state changes, so it causes minimal re-renders. It exposes the useForm hook, which has a couple of helper methods to register state, handle form submissions, and keep track of errors. Basically what renders after deconstruction is ref, name, onChange, and onBlur events. React-Hook-Form provides some of its own validation (as shown in a snippet above) or it accepts schema validator (as Yup or other). Unlike Formik, React-Hook-Form needs yupResolver to use Yup as a dependency. Abstraction is a little bit harder here since register props must be passed manually. Check it on a sandbox ! Also, this lib provides a form builder which eases up the process a lot! Final-Form This library is made by the author redux-form. That’s why it fixed a lot of mistakes from Redux-Form. React Final Form is a lightweight form library written in core JavaScript that acts as a wrapper around Final Form. React Final Form uses the observer design pattern in which the components subscribe to specific events. Instead of the whole form re-rendering, only the fields that have been subscribed re-render. So basically it combines the functionality of Fomrik and React-Hook-Form. Also, it is very small in size (only 3.2kb minified) The usage of final-form is very similar to Formik. It uses and components. is the parent component that takes all the props for the management of form and renders an input. The component created by has its own state that is managed by the tag. Basic usage with react-final-form Unlike Formik and React-Hook-Form, Final-form doesn’t support resolvers and validationSchema. That means that all validation must be done by hand. There are some hacks and workarounds , but again, hacks are not meant for coding. The cool thing about Final-form is that it provides ​​Submitting prop that lets you know if the form submission is in progress, so the submit button is also disabled. Conclusion As with everything in the coding world , to see which lib is the best, you must decide on your own. All of them have some strengths and weaknesses. React-hook-form appears to be the fastest growing and most regularly updated. Also, it makes great usage of React Hooks and component isolation which will make forms snapper and more performant. And that removes unnecessary re-renders. Formik has a large community behind it because it’s the longest-running form library of the lot. Its declarative nature makes the code easily readable, which is great for developer experience and React-final-form is the smallest one. In terms of validation, the best approach also depends on your preferences. Yup is great and very extensive, while manual validation gives more control over the components. Choosing the right one will mostly depend on the project for which it is needed. Marko Arthofer GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 26, 2026 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 26, 2026 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The Four Dimensions of a BA Team Lead Role - Tech Consulting and Software Engineering URL: https://q.agency/blog/four-dimensions-of-a-ba-business-analyst-team-lead-role/ Reflections on being a Business Analyst Team Lead: guiding a team, leading individuals, handling projects, and discovering the value of self-management. The Four Dimensions of a BA Team Lead Role | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The Four Dimensions of a BA Team Lead Role The Four Dimensions of a BA Team Lead Role February 12, 2026 — 8 min read What does it really mean to be a Business Analyst Team Lead? Is it managing a team, mentoring individuals and still delivering as a BA? Or is it something more, something you only discover once you are already deep in the role? A few years ago, I found answers to these questions when I headlessly accepted a Business Analyst Team Lead position. Why headlessly? Well, at the time I believed I had a solid understanding of what was expected of me. I had experience as a Business Analyst and I enjoyed working with similar roles. In addition, I was motivated to take on more responsibility, especially after mentoring a Junior BA colleague . What I didn’t yet understand was how much this experience would change me both professionally and personally… The leadership triangle When I stepped into the role, my company organised several workshops for those of us who were new to team leadership. Those sessions were extremely valuable. They helped clarify expectations, responsibilities and common challenges of the position. Over time, I grouped everything I learned into what I called a leadership triangle. At first, the role seemed to consist of three clear dimensions: Managing the team as a whole Leading each individual within the team Handling my own professional responsibilities , including BA work on an active project and tasks assigned by my manager Later, I realised that there was a fourth dimension, the one that was never explicitly mentioned in the job description, yet critical to sustaining the role. First dimension: Team management One of my first responsibilities as a Business Analyst team lead was to create an environment in which my team members felt connected, informed and motivated. Since we worked remotely across different parts of the country, our collaboration relied heavily on regular online team meetings . We used them to share updates from our projects, the company and the wider BA community, but also for knowledge sharing, lessons learned, retrospectives, etc. To strengthen those connections further, we also organised team-building activities . The last one was held in a location geographically central to all team members, so everyone invested a similar amount of time and effort to attend. It turned out to be a great decision and helped us connect on a more personal level. Another important part of this dimension was maintaining consistency and BA standards . At one point, we agreed to share our approaches to writing user stories and acceptance criteria, and to give each other feedback. This turned out to be a valuable and fun experiment! It was interesting to see how creative and different each of us was although we were working in similar roles. However, not all challenges were structural. After six months in the company, one team member was let go. This had an immediate impact on team motivation and atmosphere . I stayed in contact with her and later shared the positive news with the team when she found a new job. It didn’t undo the situation, but it helped bring a sense of closure during a difficult time. All of these experiences reminded me why team management matters and what my role as a Team Lead truly was. They confirmed that I wasn’t “the boss”, but an equal professional with a different responsibility : to encourage experience sharing, listen to suggestions and acknowledge milestones. Even as a distributed team, those moments reminded us that we were still working toward something together. Example: Exercise from team retrospective Second dimension: Individual leadership While team management focuses on the team as a whole, this dimension required me to coach, mentor and support each member individually. Regular one-on-one meetings were central, providing a safe space to discuss challenges, ambitions and concerns. During this time, I learned that a single leadership approach doesn’t work for everyone. Each person has different strengths, motivators and communication styles. Therefore, I needed to adapt my approach to support individual progress. This was particularly challenging because I didn’t work directly with my team members. We were on different projects, so I had to invest a lot of time gathering information about their work, understanding their skills and areas for improvement, and ensuring they were able to apply their knowledge effectively in practice. Another challenge for me was giving constructive feedback , especially when feedback from member’s project colleagues was negative and the person didn’t respond well initially. It took patience, repeated conversations and careful guidance. Over time, however, progress became visible which was incredibly rewarding to witness. Now, you might be wondering if I really had to invest so much time and effort into this. Partly, I did because of yearly performance management . Team members validated their work and completed a self-assessment, after which I assessed their skills and knowledge based on the gathered information. Together, we discussed results, defined goals for the upcoming period and aligned on next steps. But another part of me chose to work this way deliberately. I came to realise that individual leadership isn’t about checking boxes . It’s about being present, guiding thoughtfully and helping each person navigate their own path while contributing to the team and company goals. Example: Visual of team member’s skills used for professional development Third dimension: My professional responsibilities Alongside leading the team, I also took on responsibilities assigned by my manager . These included cooperating with other team leads, participating in job interviews, onboarding new team members, contributing to process standardisation, and supporting the promotion of the BA discipline both internally and externally. These activities required me to think beyond my own team and consider the broader context in which our work was taking place. Furthermore, I continued to work half-time as a Business Analyst on an active project. Staying close to delivery kept me grounded in the day-to-day realities my team members were facing, and helped me to better understand the challenges of the role firsthand. One such experience, on a healthcare development project, later became an opportunity for deeper reflection on my BA role . As you can imagine, my to-do list was pretty large at the time. I sometimes found myself questioning where I needed to invest my time and energy: the active project or my Business Analyst Team Lead responsibilities. This is where prioritization became essential. At the same time, I had to turn off my perfection mode and accept that having unfinished tasks did not mean I was failing . It was simply part of balancing multiple responsibilities. What about me, myself and I? This ongoing tension between delivery, leadership and expectations eventually led me to the fourth dimension: myself . If you’re fortunate to have a manager who leads with the care and attention you need, this dimension may feel less heavy. I was lucky in that sense. At the time, I worked with a leader who cared about my mental and emotional state, encouraged me to be more conscious of my talents, needs and boundaries, and took my professional development seriously. Still, I learned that self-management cannot be delegated . Leading others requires emotional energy, presence and clarity. Without regularly checking in with yourself, burnout becomes a matter of when , not if . I had to deliberately make time to reflect on what made me happy, what drained me, what I wanted to develop further, and what I actually needed. Easy framework for difficult situations One tool that I found particularly useful came from a leadership session where we explored the Circle of Influence , a concept popularized by Stephen R. Covey. Whenever I felt overwhelmed, I returned to this model and asked myself a simple question: What can I actually do about this? I started by separating things I could directly control from what I could only influence, and from what was outside my reach. That distinction helped me slow down, ground myself, and respond intentionally rather than reactively. Let me explain this through an example illustrated in the visual below: when a team member was unexpectedly let go. The inner circle represents things that were fully mine to own : my reactions to the news, my communication to the team members, and the emotional tone I set for the team. The next circle captures areas I could influence over time , such as trust, psychological safety, and how openly the team processed uncertainty. The outer circle reflects everything I had to consciously let go of : decisions made by the company and other employees, timing, and individual emotional reactions I could neither predict nor control. Seeing the situation mapped this way didn’t make it easier, but it made it clearer. And that clarity allowed me to focus my energy where it could actually make a difference . Example: Concern about a team member being let go through the Circle of Influence From triangle to rectangle Looking back, I am genuinely glad that I accepted the BA Team Lead role. What started as a leadership triangle evolved into a rectangle, with self-management as the fourth and equally important side. Over that year and a half, I learned so much. I learned not only about leadership and the wonderful people I had the chance to work with, but also about my own skills, development areas, interests and needs. Most importantly, this experience taught me a principle, often attributed to Denis Waitley , that changed me both professionally and personally: “Change the changeable, accept the unchangeable, and remove yourself from the unacceptable.” Understanding what you can control, what you can influence and when it’s time to step back is the lesson I value most from this journey, and one I hope to share with others. Jelena Frlan Jelena Frlan is a Lead Business Analyst at Q agency. She has been working in the BA field since her college days, collaborating with other IT experts to bring innovative solutions to clients. Her passion for learning motivates her to attend webinars and workshops, including IIBA-AAC certification which helped her further strengthen her expertise in Agile analysis. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 12, 2026 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 12, 2026 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # From Kotlin to Flutter: A New Perspective - Tech Consulting and Software Engineering URL: https://q.agency/blog/from-kotlin-to-flutter-a-new-perspective-on-mobile-app-development/ From Kotlin to Flutter: a new perspective on opting to transition from native Android and iOS development to the Flutter-powered cross-platform alternative. From Kotlin to Flutter: A New Perspective | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > From Kotlin to Flutter: A New Perspective From Kotlin to Flutter: A New Perspective May 12, 2021 — 13 min read The initial version of Google’s cross-platform SDK Flutter came out in mid-2017, and it didn’t take long for it to grow into one of the top cross-platform frameworks on the mobile app market. As a result, developers and companies are increasingly opting to transition from native Android (and iOS, of course) development to the Flutter-powered cross-platform alternative. But what are the advantages of it, and disadvantages (if any)? What challenges will a native Android developer likely face when making the transition? Why (and how) Flutter? Generally, the main reasons for choosing Flutter are the same you’ll hear with all “write once, run everywhere .” SDK’s: the quicker and cheaper development and maintenance processes (since a single codebase means less overall code needs to be written, fewer developers are required to write and maintain it). But for now, let’s leave those considerations to the management side and look at things from a developer’s point of view. How does Flutter development differ from native Android overall, and how problematic it is to adjust to? Here are the main aspects I believe should be considered: UI design App architecture Programming language — Kotlin vs. Dart Libraries & documentation UI design We’re all familiar with the dual nature of Android native layouts: you lay your views out and stylize them in an XML file and later bind them with some Kotlin code to give them purpose and functionality. Since Views are mutable, it is possible to define them in XML and modify them at runtime as necessary in code. Flutter takes a different approach with Widgets . They serve as primary UI elements and, as such, roughly correlate to Views but aren’t fully equivalent. While some correspond more directly — e.g., Rows and Columns are essentially LinearLayouts — some widgets are wrappers for specific view object properties — e.g., the Padding widget replaces the padding/margin properties. In Flutter, each Widget focuses solely on its primary purpose, rather than subclassing a ton of higher-level classes and inheriting all their attributes; the often-praised-yet-rarely-utilized “ composition over inheritance ” principle in action. This approach results in a tree of UI elements with a greater depth but at no significant loss to performance or even readability once you get used to how it works. For example, let’s say we want to create a simple button with some text and a margin around it and click. In Flutter, it might look something like this: Padding(     padding: EdgeInsets.all(16.0),     child: ElevatedButton(       onPressed: () => {         // Do something here       },       child: Text("Click me!"),     ),   ) Things to note: widget tree depth: Padding -> ElevatedButton -> Text no need for XML or any binding — everything is handled in your Dart code no view ID’s — no need for them since the views aren’t bound or addressed elsewhere That last point brings us to another significant difference. Unlike views, widgets are immutable: any change to a widget in the tree will require a redraw of the whole tree. Here is where Stateless and Stateful Widgets come into play. Essentially, StatelessWidgets have only one State, which does not dynamically change, while their associated State object governs StatefulWidgets. A state is defined by variables that keep track of relevant data ; as soon as any data changes, a setState function will redraw the corresponding widget tree. This difference, of course, requires a different approach when laying out your widgets. Since setState can only be called from within the actual State, you cannot modify your widgets from outside, as you would with Android views . It would help if you instead defined your widgets and their attributes conditionally to update them when their state changes automatically. For example, if you want a button to enable itself when some form it’s associated with is valid, and additionally change its text to indicate it when it’s disabled, you can do something like this in your widget tree: ElevatedButton(     onPressed: isFormValid ? () {       // Some function goes here     } : null, // Passing null here disables the widget     child: Text(       isFormValid ? "Confirm" : "Invalid"     ),   ); Things to note: attribute values depend on is FormValid state variable — changing it under setState redraws the widget tree no calling attribute setters from outside like in Kotlin — everything is handled in the widget definition When designing UI , one last thing I feel deserves mention (and praise) in Flutter is creating custom views/widgets. It makes the whole process intuitive to the point of being almost “descriptive”; you don’t have to look for the view closest to what you need to subclass/customize. Instead, use the composition of widgets to build whatever you need: Image and Text widgets for… well, images and text GestureDetector to make the Widget clickable Container for size, padding, background, etc. Row/Column/Stack to position widgets as needed No XML + Kotlin, no view binding, no attrs.xml to define custom attributes, nothing. Just take the building blocks and compose your custom UI elements. App architecture Separating the view and business logic is one of the fundamental concepts in software development. It is essential in both native Android and Flutter , though achieved in noticeably different ways. Due to the way the UI is laid out (immutable widget trees), state management is the game’s name in Flutter architecture. The initial intuitive take on this concept is simply using a StatefulWidget and the associated State, which we could mutate as necessary. But in such an implementation, the UI and the underlying logic are too closely coupled; the State object handles practically everything, and the Widget asks the State, “please give me the widget tree I should display.” Why not separate the state data from the view layer instead? If only we could have a way to define the application’s intended state, with the view layer only in charge of how to display its data… Well, yes, we do have exactly such a thing — BLoC . BLoC ( Business Logic Components ) is an architectural concept that revolves around the idea of streams (asynchronous data sequences) and sinks (the inverse — receivers of streamed data). A Bloc class will function as both; a sink receives inputs and streams to respective output data, with business logic to determine the input-output mapping. The Flutter-specific Bloc implementation handles it through Events and States. In a nutshell, events are inputs, and states are outputs. Any UI interaction that the business logic should respond to has to send an event to the bloc, computing and yielding a corresponding state. Since blocs function as streams output-side, you can yield multiple states for a single event (e.g., for a more resource-intensive operation, first emit a “loading,” then a “data” state). In the end, all the view layer needs to do is create an appropriate UI for the received states, optionally using the data additionally provided. The essential widgets used in the view layer in a Flutter Bloc architecture are: BlocProvider — provides a bloc dependency to its child widgets. It should be used as a parent to all widgets that interact with a bloc. BlocBuilder — builds widgets to display in response to states; this is used to build new screens. BlocListener — performs actions in response to states (used for states that do not require a screen redraw, e.g., to show dialogs/notifications) BlocConsumer — combines BlocBuilder and BlocListener (reduces boilerplate code). There is also a slightly different alternative to Bloc that can use — Cubit , which replaces events with direct calls to exposed bloc methods. This approach shortens and simplifies the code even more, but at the expense of traceability (no way of knowing what exactly caused a state change). It is often used for more simple cases, where a full bloc would be overkill. Overall, I found the BLoC architecture fairly easy to move on to from Kotlin’s MVP/MVVM as soon as I got used to the concept of full state management. As with designing widgets, it might feel unusual to have to think of the entire big picture at once, but once you get used to thinking that way, it will help you keep a high level of control over what’s going on in your app at any given time. In addition, the well-executed separation of business and UI logic will help make the code clean and easily testable. Programming language — Kotlin vs. Dart In almost any metric, matching or surpassing Kotlin is a tall order. Its simplicity reduced verbosity to (yet full interoperability with) Java and countless QoL concepts it introduces. Extension functions, data classes, scoping functions simplify a developer’s life to the point they’ll be unlikely to go back to Java or any similar language ever again. Google devs were fully aware of this when developing Flutter. They chose Dart for their SDK, a language that, in my opinion, does a great job emulating the “modern” feel of Kotlin while also enabling what they considered a high priority: speed, productivity, and optimization for UI. We already covered designing UI using Dart, so let us now focus on what else it brings to the table. In terms of syntax, the differences between the languages are minor, as is my criticism for them. I like the ternary operator and variable declaration syntax in Dart . Still, I prefer some things in Kotlin , such as “when” blocks instead of switch-case , unifying class extension and inheritance, and a much less clunky and verbose declaration of extension functions . Overall, I slightly prefer Kotlin here, but not by much, and the differences shouldn’t pose any noticeable issues when adapting to Dart. In terms of null safety , Dart has recently caught up with Kotlin ; both languages now make types non-nullable by default, requiring nullable types to be explicitly declared as such (by adding “?” after their type). Dart even takes a step further by supporting sound null safety, meaning “if its type system determines that something isn’t null, then that thing can never be null.” This requires migrating the whole project (including its dependencies) to use null safety. Still, if you can manage to do so, it will enable various compiler optimizations resulting in fewer bugs, smaller binaries, and faster execution. Asynchronous operations are handled quite differently in Dart . While Kotlin introduces coroutines — lightweight threads — Dart deals in Futures . A Future is a wrapper around a type that declares that a value of that type will be available after some delayed computation and is uncompleted before that. To synchronize a future expression, the await keyword is used before it gets its completed result. You can easily handle exceptions by surrounding the await call with a try-catch block. Overall I found this approach to be quite intuitive and easy to use compared to Kotlin coroutines, not to mention some other ways of handling asynchronicity inherited from Java . The last thing that deserves mention, but most certainly not the least, is the “ hot reload ” feature. This is technically a feature of the tooling, but it is also the language design that enables it. Hot reload/restart handles compilation incrementally, considering only the changes to the code rather than rebuilding the whole app, to redeploy the updated app to the device/emulator in mere seconds. This eliminates the need for a (buggy and rarely accurate) layout preview and speeds up development tremendously, to the point I’d consider it my one of favorite aspects of Flutter development. Overall, I was positively surprised with Dart. It didn’t blow me away at first as Kotlin did, and in many aspects, it doesn’t do anything better, but not doing worse already exceeded my expectations. The most important thing for me was for the transition to be as painless as possible, and for the most part, it was; after getting used to the new way of laying out the UI, everything else went smoothly. And, of course, the hot reload feature is an absolute treasure that makes it hard to ever return to developing without it. Libraries & documentation When it comes to documentation and official support , Google left nothing to be desired for Kotlin and native Android, and they seem to be taking the same route with Flutter. Their official documentation includes detailed explanations, examples, tutorials, and code labs for standard features and use cases and various other resources. As long as you have time to spare to go through the docs and examples properly, learning any new Flutter concept shouldn’t prove difficult. The growth of its dev community naturally follows Flutter’s fast growth in popularity. It is easy to get your questions answered on StackOverflow . There are tutorials and examples all over the place. On top of that, the SDK (as well as the Dart language) itself is constantly updated to feedback from developers who use it. Even in comparison to only a year ago, Flutter has been tremendously improved, and it doesn’t appear that growth will be slowing down any time soon. 3rd party library support deserves a special mention; in the pub. Dev, you can find a wide range of packages contributed by other developers for just about anything you can think of. Users can filter packages and rate their quality, making it easy to find the best solution for whatever you need. Adding a package to your project is trivial, only adding a line to your pubspec.YAML file and running a CLI command to fetch dependencies. The only thing that might pose issues is using 3rd party native libraries in a Flutter project. This is not an everyday use case, usually encountered only when integrating specific devices (sensors, cameras…) with your app that supports only platform-specific APIs. Flutter does provide a solution through PlatformChannels , which allows you to call native functions and pass primary data between Dart code and the native platform; however, that involves writing a native implementation of those APIs and calling those functions in Dart. This is unfortunate as it will require some native ( Android and iOS ) coding, which a Flutter dev might not be familiar with, but I honestly don’t see how it could be done any better. Fortunately, with the growth of Flutter’s popularity, these situations are growing ever rarer. Conclusion Everyone knew the advantages of Flutter over native development ever since first hearing the term “ cross-platform “: less code, fewer developers required, more accessibility, and cheaper development and maintenance. But the transition is what every developer is anxious about — how much of our previous knowledge will we need to “unlearn” to learn this new thing? Fortunately, for a Kotlin dev, the barrier of entry is about as low as it can be. Some things will require a somewhat different approach, such as the UI design and State management-oriented architecture, but the overall transition is intuitive and simple , made even simpler by a very accessible and efficient Dart language and a significant development ecosystem. In this kind of environment, any Kotlin Android developer will be developing cross-platform apps with Flutter in no time. Jasmin Vucelj He works in the Mobile team and develops Android, and Flutter apps. Iron Maiden helps him write code faster unless his hair gets in the way. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 12, 2021 — 13 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 12, 2021 — 13 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # From New York to Zagreb: 5 Lessons for Building Partner-Led Growth - Tech Consulting and Software Engineering URL: https://q.agency/blog/from-new-york-to-zagreb-5-lessons-for-building-partner-led-growth/ Learn more about the key 5 lessons for building stronger partner-led growth through listening, alignment, and stronger client collaboration. From New York to Zagreb: 5 Lessons for Building Partner-Led Growth | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > From New York to Zagreb: 5 Lessons for Building Partner-Led Growth From New York to Zagreb: 5 Lessons for Building Partner-Led Growth March 31, 2026 — 5 min read Partner-led growth does not start with a pitch. It starts with understanding what clients already know, what they are already building, and where they need the right support to move faster. From industry conversations in New York to hands-on workshops in Zagreb, this experience reinforced a simple idea: the strongest growth comes from listening well, aligning early, and building together around real business priorities. Summer, 2012, on Earth . Harvard Business Review (HBR) publishes “The end of the solution sales” . The authors argue that “customers in an array of industries, from IT to insurance to business process outsourcing, are often way ahead of the salespeople who are ‘helping’ them.” May 2025, New York . Q sales team recognises that that observation remains equally relevant over time. Having the opportunity to participate in the INMA congress , we learned that the media industry leaders know their key pain points “by their name”. They are navigating through the ongoing shift from traditional print to digital media and actively developing digital products. Also, they keep track of innovations in digital storytelling, and are aware of AI’s impact on jobs and content creation. They are nurturing the monetisation formula built on engagement and retention. June 2025 – February 2026, Zagreb . The broader industry understanding came to life through partner-led growth around a single meeting table. We were glad to welcome our long-term media clients to live workshops, where in a practical and focused setting we explored how to make their internal processes faster, clearer, and easier to manage. With HBR’s proposition in mind, our focus was to ask, listen, and create space for client’s expertise to come through, so we could build on it and support them better. Within the first days, we focused on listening. We asked a lot of questions, trying to observe the challenge from multiple angles to understand goals, needs, and context. In the following sessions, we dove into the topics defined in advance, reviewed what clients had already built, and explored what they aim to create in the future. By the final day, we aligned on priorities, and drafted MVPs together. This season was also a great reminder of five partner-led growth concepts. Concepts we nurture 1. Interaction > AI We live in a time where AI can detect pain points, make suggestions, recommend next steps, and definitely write a more structured email than most of us can. But prompting only enriches AI. A face-to-face conversation with clients helped us all grow by sparking reflection, expanding context, and building shared understanding. There’s still nothing that beats sitting across from someone, talking it through, clearing things up, and sharing ideas (and Bajaderas). 2. Remote works, but presence works better We’d had several short online calls with each team before. They were only short prep meetings, but even there we could recognise the remote limits; details slip, easier to lose focus and sometimes the big picture gets blurry. Things moved faster and went deeper when we were in the same room. Sitting around one table, we shared real examples, discussed goals, raised questions, and took a lot of notes (yes, some even handwritten). 3. A cross-functional team is always a good idea Because this actually means that the problem was observed from several angles. Here’s an example from one of the sessions. The client helped us understand their creative and technical context. Viktor, our Business Analyst, focussed on the process. Marija, our UI/UX expert, paid attention to the content, style, and the user’s perspective. Niko, Nikol, and Zvone (Engineering) made sure the solution made sense technically. Zoran, Solution Architect, observed monetisation and analytics opportunities using the market-ready solutions. Also, we translated AI potential into something useful and grounded. 4. To stay agile, we need time to reflect My favourite reminder of this season. We stayed together after the workshops to compare perspectives and talk through what we heard. One -hour debriefs helped us avoid missteps every single time and hit the next session sharper. Slowing down for a moment helped us move forward with more clarity. 5. Our ultimate goal is the long-term success of the client HBR said it back in 2012 — clients often have a clearer view of what’s not working. They just need space to work through it. That’s why quick fixes aren’t enough. Although it sounds like a cliché, it’s worth repeating: never forget the end goal. 🙂 What could be done better? We genuinely believe the best learning comes from experience. From big ideas to small observations, the real value comes from sitting together, asking questions, and building something step by step. We’ll keep the detailed insights to ourselves — consider them part of what we’ll bring to the next collaboration! And if you ever need an excuse to talk about process optimisation supported by tech solutions over coffee and Bajaderas, feel free to reach out to us . Vesna Palada Imagine three circles: Clients, Sales, and Engineering. Vesna is a Presales Engineer sitting at their intersection — bridging communication gaps by 'speaking all three languages' and crafting solutions that connect ideas with possibilities. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 31, 2026 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 31, 2026 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Frozen Friday - Tech Consulting and Software Engineering URL: https://q.agency/blog/frozen-friday/ Discover Q’s Frozen Friday tradition, where employees enjoy fruity and chocolate treats every Friday to sweeten the end of the workweek. Frozen Friday | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Frozen Friday Frozen Friday November 30, 2018 — 1 min read Every Friday is a “Frozen Friday”, something everyone at Q is looking forward to! It’s a way to make our Fridays more sweet, and our weekend less bitter. Our Oice team is making sure a multitude of fruity & chocolate flavors is brought directly to everyone’s table. Yaaay! Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 30, 2018 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 30, 2018 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # GitHub Copilot: Unlocking Smart Coding with Your AI Development Assistant - Tech Consulting and Software Engineering URL: https://q.agency/blog/github-copilot-unlocking-smart-coding-with-your-ai-development-assistant/ Exploring the potential of GitHub Copilot: Enhancing developers' capabilities and boosting coding productivity GitHub Copilot: Unlocking Smart Coding with Your AI Development Assistant | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > GitHub Copilot: Unlocking Smart Coding with Your AI Development Assistant GitHub Copilot: Unlocking Smart Coding with Your AI Development Assistant May 28, 2024 — 15 min read Exploring the potential of GitHub Copilot: Enhancing developers’ capabilities and boosting coding productivity As AI technology continues to evolve, it shapes our lives and work in profound ways, with software development being no exception. A multitude of AI coding assistants, including GitHub Copilot, Code Llama, StableCode, ChatGPT, Tabnine, and Amazon CodeWhisperer, have emerged to assist developers in writing code faster and more efficiently. Beyond mere coding, these AI assistants have evolved into intelligent rubber ducks, capable of explaining code, aiding in debugging, crafting meaningful commit messages, generating documentation, and assisting with commonly forgotten git commands. This blog focuses on GitHub Copilot, one of the most popular AI assistants, providing an overview of its features, practical examples, and insights into how it enhances the development workflow. About Github Copilot GitHub Copilot is an AI pair programmer developed by GitHub, OpenAI, and Microsoft. It provides autocomplete-style suggestions to developers as they code, supporting all languages and frameworks found in public repositories. The quality of suggestions depends on the diversity and volume of training data. With enhanced performance in languages like Python, JavaScript, TypeScript, Ruby, Go, C#, and C++, Copilot offers suggestions through typing code or writing natural language comments. Additionally, GitHub Copilot features a Chat feature powered by GPT-4, enabling developers to interact with Copilot for solutions, bug fixes, or code explanations. Available across IDEs, GitHub Mobile as a chat interface, in terminal through GitHub CLI and on Github.com with Enterprise subscription, GitHub Copilot offers three subscription plans: Copilot Individual, Copilot Business, and Copilot Enterprise. The Individual plan includes a 30-day trial period, allowing users to experience its capabilities firsthand before committing to a subscription. Github Copilot plans comparison GitHub Copilot is available as an extension in various popular Integrated Development Environments (IDEs), including Visual Studio Code, Visual Studio, Vim, Neovim, the JetBrains suite of IDEs, and Azure Data Studio. In the following sections, we’ll explore how GitHub Copilot is utilized specifically within Visual Studio Code. Getting started with Github Copilot in VS Code GitHub Copilot is accessible through either a personal GitHub account, with a GitHub Copilot Individual subscription, or an organization account, with a GitHub Copilot Business or Enterprise subscription. This blog focuses on getting started with Copilot using an Individual license. Once subscribed, the initial step involves installing the Github Copilot extension from the Visual Studio Code Marketplace. This process entails several steps, including authorizing VS Code in your GitHub account and authorizing this tool in the browser. For detailed instructions, please refer to the following link . GitHub Copilot extension in VS Code Marketplace While installing the GitHub Copilot extension is sufficient to start receiving suggestions, to access GitHub Copilot Chat, it’s necessary to install the corresponding extension from the Marketplace as well. This will enable you to fully utilize the capabilities of GitHub Copilot, including interacting with it for solutions, bug fixes, or code explanations. GitHub Copilot Chat extension in VS Code Marketplace GitHub Copilot Chat in VS Code To utilize Copilot in the CLI , it’s essential to install the github-copilot extension using GitHub CLI. This extension enables seamless integration with the command line interface, expanding the accessibility of GitHub Copilot across different development environments. gh extension install github/gh-copilot Before installing the github-copilot extension, ensure that GitHub CLI is installed on your system. Instructions for installing GitHub CLI can be found on this link . Once GitHub CLI is installed, proceed with installing the github-copilot extension to enable Copilot functionality in the command line interface. Exploring Basic Code Suggestions: Examples to Get Started with GitHub Copilot GitHub Copilot offers code suggestions through both code writing and natural language comments. In the examples below, we explore basic scenarios such as calculating the difference between two dates or generating dummy data like text, random numbers, dates, colors, and arrays of objects for various purposes such as social media posts, payment methods, or country and language selection. Example 1: A Basic Function for Calculating the Difference in Days Between Two Dates Example 2: Creating Various Dummy Data for Common Project Scenarios To access Copilot commands within our files, simply press ⌘+i to open the communication pop-up. GitHub Copilot Commands Available in File Below, we can observe suggestions for field validations commonly employed in form development, along with the /fix command in action to refine the suggested code. Example 3: Basic Field Validation Suggestions – Passwords, Emails, Credit Cards Example 4: Utilizing GitHub /fix for Email Validation Adjustment Example 5: Utilizing GitHub /fix for Password Validation Adjustment If dealing with large arrays of hardcoded data, we can prompt Copilot to remove any duplicates present. Example 6: Removing Duplicates from an Array with Copilot When working with forms, it’s common to implement validation along with error messages and initial data. In the example below, we first defined the FormDataType interface. Based on the props within that interface, I prompted Copilot to generate a Yup validation schema and an initial form data object. Additionally, we included an example of a password generator function with specific conditions. These conditions were automatically incorporated into the Yup validation. Example 7: Password Generator Function, Form Initialization with Yup, Initial Data, and TypeScript Interface Creation In the example below, we utilize a comment to describe the initialization of an Axios instance and the usage of its interceptors for authentication. Example 8: Creating Axios Instance with Interceptors for Authentication Token Addition – Accepting Suggestions with ‘Tab’ Key In the following example, we witness Copilot’s Intellisense-like behavior as it suggests complete code for the useLocalStorage hook. Example 9: Creating the useLocalStorage Hook and Resolving Errors We can also request examples of usage from Copilot. Below, we have an example of a useFetch hook that was generated, along with an example of how to use the hook. This approach allows us to seek usage examples for any hook or library we use, ensuring we understand the correct way to utilize them. Example 10: UseFetch Hook with Cancellation Mechanism and Usage Example GitHub Copilot can save time by quickly generating boilerplate code for tasks like creating Redux code, base components, CRUD APIs, service files, and more. Below are examples of generating an Express server with basic user routes, a user.service.ts file consuming those routes, and the quick creation of TypeScript interfaces. Additionally, we demonstrate how Copilot handles GraphQL queries and mutations. Example 11: Generating Simple CRUD Operations in Express Example 12: Generating users.service.ts File Based on Previously Generated CRUD Operations Example 13: Modifying User Model with Copilot Assistance Example 14: Handling GraphQL Queries and Mutations with Copilot Code Suggestions in Existing Project Workflows My experience using Copilot with an old codebase paralleled my testing scenarios, albeit with an added layer of complexity due to its integration with existing project packages. When tasked with creating new type definition files, Copilot efficiently learned from existing definitions and proposed code snippets incorporating those types. Similarly, during service creation, it seamlessly integrated these new types alongside a custom Http client powered by Axios. Notably, Copilot’s suggestions extended to UI component creation, consistently favoring styled-components. Interestingly, it even provided default base styles tailored to component names; for example, automatically setting a height of 1px and width of 100% for a Divider component. However, I encountered a minor hiccup when updating a type name, necessitating changes throughout the file. Though Copilot eventually managed to adjust the type name, it struggled with importing from the defining file, resorting to a generic path with a comment prompting manual correction. In such instances, I found resorting to Ctrl+R and IDE auto-import to be a more straightforward solution. Nonetheless, this may simply reflect my limited experience with Copilot. Example 15: New Service Generated with Comments Example 16: Default Base Code for Divider and Description UI Components GitHub Copilot Chat The main difference between using GitHub Copilot in code and in Chat lies in their functionalities. In code, Copilot seamlessly integrates with your development environment, allowing it to directly make changes to the file based on suggestions. On the other hand, using Copilot in Chat provides a collaborative space for communication within its own tab. However, while Copilot can still provide code suggestions in Chat, it doesn’t have the capability to apply those changes directly to the file; users must manually copy and paste the code. It’s important to note that there are differences in available commands between Copilot Chat and its integration within code. For instance, the /docs command, which allows for writing documentation, is not available in Chat, although we can still ask to write documentation for us. Instead, Chat offers commands like /new for generating a new workspace, /newNotebook for creating a Jupyter notebook, or @terminal to provide assistance with terminal commands. Overall, understanding the distinctions between using Copilot in code versus Chat can help users effectively leverage its capabilities within their development workflows. GitHub Copilot Chat: Available Commands In GitHub Copilot Chat, users can request code changes or generate new code, similar to using it directly within a file. All examples previously mentioned can be utilized in Chat, with the key distinction being that changes made in Chat do not directly impact files, as mentioned earlier. Below, we demonstrate an example of using Copilot Chat to convert a JavaScript class constructor to a factory function. Example 17: Replacing Class Constructor with Factory Function Using GitHub Copilot Chat In addition to requesting code changes or generating new code, we can also ask Copilot to explain existing code or provide suggestions for improvements. The examples below showcase these capabilities in action. Example 18: Requesting Error Suggestions in a Different Manner with GitHub Copilot Chat Example 19: Requesting Code Improvements from GitHub Copilot Chat Example 20: GitHub Copilot Chat Explaining Axios Interceptors In addition to its code generation capabilities, GitHub Copilot can be utilized to generate entire projects using the @workspace /new command . Instead of relying on tools like CRA or Vite, users can specify project requirements such as desired technologies, packages, routes, and more, allowing Copilot to suggest and create a customized workspace. A demonstration of using this command can be found in the video below. Load YouTube video This video is hosted by YouTube. Loading it lets them set cookies on your device. Efficient Test and Documentation Generation with GitHub Copilot GitHub Copilot proves to be immensely useful and time-saving for generating tests, especially considering the frequent repetition of code in testing scenarios. With the /tests command, Copilot simplifies the test generation process, allowing users to request test cases through various methods. Whether it’s asking Copilot Chat to generate test cases for a specific file, using the communication popup directly in the file, writing a comment in natural language, or simply starting to write code, Copilot seamlessly suggests the rest of the test cases. Example 21: Automatically Generated Test Cases for Base Button Component Example 22: Correcting Usage of Test Method Example 23: Generating Mock Data for Testing Example 24: Test Cases Generated for a Page, with Additional Tests Added via Comments, Utilizing Generated Mock Data Example 25: Generating Test Cases for Modal Component with Login Form Using GitHub Copilot Chat GitHub Copilot streamlines the process of documentation integration into code by offering multiple methods. Developers can directly request documentation within the file through comments or by adding a markdown file and writing a comment, although the latter may not consistently yield optimal suggestions. For comprehensive and detailed documentation, utilizing Copilot Chat proves most effective, providing thorough explanations and usage examples. While the generated documentation is typically basic, it serves well in providing comments for methods and types. Notably, Copilot excels in generating detailed documentation for public libraries, offering valuable insights and instructions. Additionally, Copilot functions as an intelligent IntelliSense tool, suggesting words or sentences that may have been overlooked, enhancing the documentation process for custom code. Example 26: Code Documented with Comments Using GitHub Copilot Example 27: Generating Markdown File for Requested Documentation Using GitHub Copilot Github Copilot in CLI GitHub Copilot in the Command Line Interface (CLI) serves as a versatile chat-like interface, offering assistance with various command line tasks. Users can request help with generic commands, git commands, or GitHub-specific gh commands, refining their queries until they obtain the precise information they need. Copilot’s ability to suggest the appropriate command for specific tasks streamlines the CLI learning process, making it easier for users to navigate and execute commands effectively. Moreover, Copilot serves as a resource for explaining unfamiliar commands, providing clear and concise explanations to help users understand their functionalities and usage. For further information, refer to the documentation page for comprehensive details and usage guidelines. Example 28: Leveraging GitHub Copilot in the Command Line Interface (CLI) Additional Use Cases and Demonstrations While testing GitHub Copilot, I discovered several other intriguing applications. For instance, it can generate commit messages seamlessly within Git Lens, explain error messages from the terminal, and offer suggestions for resolving them. Additionally, it proves beneficial in generating CI/CD scripts, such as those for deploying applications using GitHub Actions. It’s worth noting that GitHub Copilot can also assist in generating pull request descriptions. However, this feature is currently exclusive to the Enterprise subscription, which I didn’t have access to for testing purposes. From examples I’ve seen, it appears to function similarly to the way it generates commits in VS Code. Copilot in the GitHub Mobile app bears a resemblance to ChatGPT and offers multifaceted assistance. It can provide answers to queries about GitHub features, workflows, and terminology, as well as offer guidance on efficient GitHub usage, including repository management, issues, and pull requests. Additionally, it aids in finding specific information within GitHub repositories using the codesearch function, offers code suggestions or solutions based on user queries, and can even explain programming languages and coding techniques. I’m enthusiastic about exploring further possibilities for utilization of Github Copilot. Example 29: Generating Commit Messages for New Pages in the Application with GitHub Copilot Example 30: Generating Commit Messages for Refactoring Existing Code and Creating Documentation with GitHub Copilot Example 31: GitHub Copilot Explaining Error Messages from Terminal Example 32: Generating Basic GitHub Actions Workflow Configuration Exploring Areas for Improvement While GitHub Copilot, like other AI tools, offers significant benefits, it’s not without its imperfections. During my testing of its features, I encountered several issues. One notable challenge is the variability in the quality of code suggestions. While Copilot aims to provide helpful recommendations, the suggestions can range from well-structured and efficient to convoluted or inefficient. This variance is understandable given that Copilot learns from public repositories containing a mix of old and suboptimal code. It’s essential to carefully review and understand these suggestions before accepting them. Additionally, Copilot may experience performance issues or slowdowns, particularly when generating complex code suggestions or processing large datasets. This can sometimes result in suggestions being cut off, leading to incomplete or truncated recommendations. However, this issue is usually quickly resolved by repeating the question to Copilot. Another challenge arises when using the /fix command to make changes to code in a file. In some cases, it may fail to apply changes to requested parts only, potentially due to improper usage of the command. However, using the same command in Copilot Chat often yields better results, as it provides explanations for the changes made. Importing custom components may also pose challenges, particularly when creating a new file where Copilot has limited context about the component’s purpose. However, this issue is less prevalent when editing existing components. Furthermore, without a clear understanding of the user’s intentions, Copilot may provide misguided or unhelpful assistance. This issue can be mitigated by learning how to formulate queries effectively to elicit the best possible response from Copilot. Finally, while rare, there have been instances where listing all suggestions in a new tab resulted in a large chunk of code redundantly repeating a single function multiple times. While this occurrence has minimal impact on the overall Copilot experience, it highlights the occasional quirks that may arise when using AI-driven tools. Example 33: Redundant Repetition of Single Function While some of these issues may diminish with increased familiarity and usage of Copilot, others are inherent to the nature of evolving AI technologies. As Copilot continues to improve and adapt, we can anticipate solutions to these challenges. It’s encouraging to note that only a few of these have a more significant impact on the coding experience. By carefully reviewing suggested code and selecting the best solutions, or by mastering more efficient tool usage, we can mitigate these challenges. Most of these issues had a small or negligible impact on the overall coding experience. Conclusion GitHub Copilot has been a game-changer for my productivity as a developer. It’s like having an invaluable assistant that consistently provides insightful suggestions and solutions, significantly enriching my coding experience. From swiftly generating boilerplate code to offering indispensable documentation capabilities, Copilot streamlines development workflows and unlocks new possibilities in coding. GitHub Copilot offers solutions and explanations directly within the IDE, eliminating the need to search for answers elsewhere. While there are occasional pitfalls, such as over-reliance or the need for caution when accepting suggestions, the overall benefits far outweigh these considerations. With a 30-day trial period, I recommend every developer to explore all of its capabilities and become accustomed to its seamless integration into the coding process. It quickly becomes an indispensable coding partner, enhancing productivity and creativity in ways that were previously unimaginable. Leni Duderija React developer at Q with almost a decade of experience in frontend development. Alongside coding, he plays trumpet, he's passionate about hiking, sports and martial arts, with a particular affinity for Krav Maga, boxing, and CrossFit. Wine lover. Recently, he's been lacing up his shoes for runs with his toddler Bartul. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 28, 2024 — 15 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 28, 2024 — 15 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # GraphQL - Get More by Fetching Less - Tech Consulting and Software Engineering URL: https://q.agency/blog/graphql-get-more-by-fetching-less/ Learn how GraphQL helps Flutter developers fetch only the data they need, reducing redundant data compared to traditional REST APIs. GraphQL - Get More by Fetching Less | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > GraphQL – Get More by Fetching Less GraphQL – Get More by Fetching Less June 20, 2022 — 8 min read Since I started developing mobile apps, REST has seemed to be a standard for designing web APIs. However, I’d never imagined fetching data from the server could be easier than sending a request to a specific endpoint and fetching all the needed data. I wasn’t always happy that, in response, I would get extra data that I didn’t exactly need. But the backend had to provide data to multiple applications, and creating different endpoints for each one of those applications wasn’t even an option. One day I came across an article with REST and GraphQL comparison. That was a pro-GraphQL article, and I had to try it by myself. In this blog post, I will explain my first steps of learning GraphQL from the client-side – as a Flutter developer. REST and GraphQL comparison First, I will determine the two models that will be used in the following examples. class Article {     int id;     int user_id;     String title;     String subtitle;     String abstract;     String body;     String cover_url;     DateTime created_at;     DateTime updated_at;     DateTime deleted_at; } class Comment {     int id;     int user_id;     int article_id;     String content;     DateTime created_at;     DateTime updated_at;     DateTime deleted_at; } The core idea behind REST is working with resources. Each of those resources is represented with an endpoint. Fetching data from an endpoint is pretty simplified; the client only has to request a specific predefined endpoint. If there is a need to filter data or fetch more data, the next step would be to send specific request parameters. For instance, if there is a need to fetch a list of articles and related comments using REST, the client would most likely send one of the next sets of requests with accompanying responses: 1. GET /articles or GET /articles?extra=comments {     "data":[         {             "id":1,             "title":"title1",             "subtitle":"subtitle",             "abstract":"abstract",             "body":"post body",             "user_id":17,             "comments":[                 {                     "id":1,                     "user_id":72,                     "article_id":1,                     "content":"comment-content",                     "created_at":"2022-03-16T14:12:41.918743",                     "updated_at":"2022-03-16T14:14:51.639264",                     "deleted_at":null                 },                 {                     "id":2,                     "user_id":17,                     "article_id":1,                     "content":"comment-content",                     "created_at":"2022-03-18T15:24:45.118149",                     "updated_at":null,                     "deleted_at":null                 }             ],             "created_at":"2022-03-16T12:32:44.719742",             "updated_at":null,             "deleted_at":null         }     ] } Both of these endpoints could provide the same response. The decision if there is a need to send extra parameters to get comments depends on backend implementation. However, this response has a lot of redundant data. If it were made specifically for one application, that wouldn’t be the case, but, as said in the introduction, when the backend has to support more than one application, it will often provide more data than needed. 2. GET /articles {     "data":[         {              "id":1,              "title":"title1",              "subtitle":"subtitle",              "abstract":"abstract",              "body":"post body",              "user_id": 17,              "created_at":"2022-03-16T12:32:44.719742",              "updated_at":null,              "deleted_at": null         }     ] } 3. GET /articles/1/comments {   "data":[     {       "id":1,       "user_id":72,       "article_id":1,       "content":"comment-content",       "created_at":"2022-03-16T14:12:41.918743",       "updated_at":"2022-03-16T14:14:51.639264",       "deleted_at":null     },     {       "id":2,       "user_id":17,       "article_id":1,       "content":"comment-content",       "created_at":"2022-03-18T15:24:45.118149",       "updated_at":null,       "deleted_at":null     }   ] } These two code snippets show that endpoints for different objects are separated in some implementations. As one can notice, the same problem with redundant data also appears here. There is also another thing that slows down the process of fetching needed data, which is a need to make more than one API request, one to fetch the list of articles and others to fetch comments for each specific article. In comparison, the main idea behind GraphQL is defining a structure of needed data in the request. This way, under-fetching, and over-fetching data are avoided, and everything needed is provided at one request. Therefore, if a client needs to fetch the title and body of each article and the accompanying comments content, the GraphQL request would be: query {   articles {     title     body     comments {       content     }   } } The response to that is pretty straightforward: {   "data":[     {       "title":"title1",       "body":"post body",       "comments":[         {           "content":"comment-content"         },         {           "content":"comment-content"         }       ]     }   ] } There is no need for more than one request and no redundant data. Based on this comparison, GraphQL is much easier to use from the client’s perspective because the client asks for specific data and gets the exact needed data, nothing more nor less. Flutter + GraphQL Is there a better way to learn new technology than trying it out? For this purpose, I decided to make a small mobile application that uses GraphQL for API requests. Firstly, I needed to set up a simple API from which I could fetch data for my application. Since this blog post isn’t about the backend implementation of GraphQL, I decided to make it as simple as possible. For that, I used the Hasura GraphQL engine and created a small database there, entered some initial data and the “backend” was ready to make my first GraphQL queries. For GraphQL integration into the Flutter application, I used graphql_flutter package. Installation and usage is pretty simple, one just needs to follow steps from their instructions page. As it is written in the official graphql_flutter documentation, for connecting to GraphQLServer I needed to create a GraphQLClient . Hakura provided me with an API link and an authorization token. final HttpLink httpLink = HttpLink(   'https://relevant-monarch-52.hasura.app/v1/graphql',   defaultHeaders: {     'X-hasura-admin-secret': '**********************',   }, ); Nothing more than that was needed for connecting to the API, and after writing only a few lines of code, I was able to query and mutate data! The next step was wrapping my MaterialApp with a GraphQLProvider widget so I could use Query and Mutation widgets everywhere in the application. The homepage of my application shows a list of Q blog articles with accompanying titles, subtitles, and cover images. I’ve wrapped a ListView with a Query widget and created a simple multiline query for fetching needed data. The query string is parsed to the standard GraphQL abstract syntax tree using the gql() method from the graphql_flutter package. static String getArticles = """   query Articles {     articles {       id       title       subtitle       cover_url     }   } """; … …     child: Query(   options: QueryOptions(     document: gql(getArticles),   ),   builder: (QueryResult result, VoidCallback refetch, FetchMore fetchMore}) {     // check is result successfully loaded     List articles = result.data['articles'];     return ListView.builder(       itemCount: articles.length,       itemBuilder: (context, index) {         return BlogListItem(           article: articles[index],         );       },     );   }, ), … I wanted to show more data related to a specific article on the second screen. For that need, I had to fetch an article by ID with its title, content, cover image, and related comments. The query that fetches needed data is: static String getArticleById = """   query GetArticleById($id: Int!) {     articles(where: {id: {_eq: $id}}) {       body       title       cover_url       comments(order_by: {created_at: desc}) {         content         created_at         id       }     }   } """; The biggest difference from the previous request, where I fetched the list of articles, is that in this example, in QueryOptions , I had to send an ID parameter for filtering results. Query(     options: QueryOptions(         document: gql(             getArticleById,         ),         variables: {             'id': blogId,         },     ), ... ), In GraphQL, any request that causes a change in the database is called a mutation . For that purpose, the graphql_flutter package provides a Mutation widget. In my app, I added functionality to add, edit and delete comments. The following three code snippets show a Mutation request for each of those functionalities. static String addComment = """   mutation AddComment($content: String!, $articleId: Int!, $userId: Int!) {     insert_comments_one(       object: {content: $content, article_id: $articleId, user_id: $userId}     ) {       content     }   } """; static String editComment = """   mutation EditComment($commentId: Int!, $editedComment: String!) {     update_comments_by_pk(pk_columns: {id: $commentId}, _set: {content: $editedComment}) {       content     }   } """; static String deleteComment = """   mutation DeleteComment($commentId: Int!) {     delete_comments_by_pk(id: $commentId) {       id     }   } """; The following code is an example of using the Mutation widget for deleting a comment item. … return Mutation(     options: MutationOptions(         document: gql(deleteComment),         // you can update the cache based on results         update: (GraphQLDataProxy cache, QueryResult result) {             return cache;         },         // or do something with the result.data on completion         onCompleted: (dynamic resultData) {             print(resultData);         },     ),     builder: (         RunMutation runMutation,         QueryResult result,     ) {         return IconButton(             onPressed: () => runMutation({'commentId': commentId}),             icon: Icon(Icons.delete),         );     }, ); … Conclusion In this blog, I have described my path of learning GraphQL from the client’s side and building my first Flutter app that uses GraphQL. Since I used the Hasura GraphQL engine to create the API, I developed a simple app with CRUD operations without needing to write one line of code on the backend. The thing I like most about GraphQL is the simplicity fetching and modifying needed data. I haven’t noticed a difference in response time because small requests I made are still countable in milliseconds. In the case of this particular app, I can say that Hasura and the graphql_flutter package played a huge role in making it so easy to learn and develop. From a Flutter developer’s side, I would like to try using GraphQL even for more complex projects! Matea Ignatoski Matea is a mobile applications developer at Q Agency. She enjoys learning new skills. If she is not at home in front of the computer, you can find her hiking in the woods, brewing beer, or traveling to some distant destination. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 20, 2022 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 20, 2022 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Guide for the Tech Lead - How to Make a WordPress Plugin Skeleton - Tech Consulting and Software Engineering URL: https://q.agency/blog/guide-for-the-tech-lead-how-to-make-a-wordpress-plugin-skeleton/ Learn how to create a clean WordPress plugin skeleton as a tech lead. Set up structure, best practices, and scalable foundations for future development. Guide for the Tech Lead - How to Make a WordPress Plugin Skeleton | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Guide for the Tech Lead – How to Make a WordPress Plugin Skeleton Guide for the Tech Lead – How to Make a WordPress Plugin Skeleton December 1, 2025 — 9 min read This is not a tutorial about how to use a WordPress Plugin Skeleton . There are so many boilerplates and skeletons on the net. Instead, I’m writing from the perspective of a tech lead on the WordPress projects. I’m trying to explain why you need to have your own plugin skeleton for your team and give you an example of how to build one. Why Should You Make a New WordPress Plugin Skeleton? Anyone can build a WordPress plugin in its own way. But if you have to handle several teams on multiple wp projects, add new people, mentor them, help them transfer from one project to another to work on other people’s code, then you should build your own wp plugin skeleton that will help you and your team to: speed up development easily add a new developer to the project make juniors love OOP programming and switch from procedural spaghetti code more quickly allow them to easily switch from one plugin to another that someone else in your team already built teach them what you know and allow them to “get inside your mind” allow them to grow and learn things beyond the WordPress environment I noticed that some companies have tried to make wp plugin development for their developers so much easier and faster than when you type in terminal $ something create plugin some name you get a bunch of vendors and node modules that are downloading for a whole minute. I’m not saying that that is bad. But if you are a new developer in that company, what do you think? Should I leave all this here? What are all of these? Why do I need all of them? Should I spend my whole weekend trying to understand? And the most important question, where should I put my code ? It would be best if you introduced your plugin boilerplate and architecture in small steps with real examples. Small steps are much more important than trying to understand everything at once just because it is there. Development won’t be slower, because, in the end, the lead developer will ask anyway, why did you leave all of these that you don’t need, please remove them. Or it can go the other way, a developer decides to build from scratch because they think that the plugin will be small and doesn’t need any special boilerplate and architecture (shown wrong so many times). How to Build a WordPress Plugin Skeleton? Oicial WordPress Best Practices cover several important things that you should implement into your skeleton. Object-Oriented Programming Method: Folder structure Clear architecture of the plugin Boilerplate Prefix classes and constants and any function that needs to be registered globally Create a starting point with an example that developers can test immediately inside the WordPress environment. You can release main versions of the git repository and upgrade each version later by tagging branch checkouted from the version you wish to upgrade. The point is not to just build something that you can already generate with WP-CLI commands . Like gutenberg blocks, post-types or taxonomy. But to give them an example of how to handle client requests that are more complex and not so related to WordPress, it needs to be somehow integrated with your WordPress site. Our client often needs some third-party integration. That is why I’ve built a skeleton with an example of how to handle custom tables and cron jobs. Also, I’m a fan of the Symfony framework and excited about Symfony design patterns and components. I have implemented in WordPress skeleton several Symfony components to handle validation and data normalization. I knew that the learning curve from Procedural programming to OOP will be higher if I introduce components that are not fitting straight forward into WordPress plugins. That is why I made a WordPress Plugin Make r . WordPress Plugin Maker If you clone this repo in your local folder, you will notice that the actual WordPress Plugin Skeleton is inside the folder wp-plugin-skeleton. In the root of the repo is another app folder with WordPress Plugin Maker. Open the terminal. Go to the folder where you cloned the repo. Run the command: $ php app/bin/console app:make-wp-plugin "" "" "" It will make your new plugin, from the copy of the wp-plugin-skeleton, with your name, author and version in the same folder. Tada! You can now copy that new plugin and install it inside your WordPress plugins folder. It renames all the class names and all prefixes, author and version. When you run the command again, any new class in a new file and/or a new folder will be added immediately. Once you create the WordPress plugin maker, you have it for any future upgrade of the WordPress Plugin Skeleton. If you need some Options Page and are not so familiar with the Symfony OptionsResolver component, you can use it anyway and learn more and more about it later. You need to follow an example or rename fields for the Options Page in the existing example and have your Options Page ready. Make and Test Your WordPress Plugin in a Few Minutes I will cover the first 6 git versions in this blog post from this repository . You can checkout to each release|tag and test in your WordPress project . I will not go into too much detail about each version now. I will cover more in detail in my next blog posts and update this one with links. You will need to have WordPress installed to test the plugin. If you don’t have some WordPress setup at your hand and you have Docker installed, you can use this Docker-based environment setup made for this blog post. Checkout to any version and run the command: $ php app/bin/console app:make-wp-plugin "" "" "" Go to the new folder and run composer install. Copy the new folder to your WordPress plugins folder to install the plugin. Activate the plugin in the admin. v1.0.0 Boilerplate First version can be just a plain boilerplate . If you have some big boilerplate in your company try to split it in multiple versions. I have used this one: *LINK* There is not much to test but you can see that the plugin is valid. Check out this release: $ git checkout tags/v1.0.0 -b feature/boilerplate v2.0.0 Options Page In version v2.0.0 I have used the Symfony component OptionsResolver to build the plugin’s Options Page. If you wish that your developers learn more and grow outside of WordPress scope, develop a WordPress Plugin Skeleton in such a way that developers that never worked with Symfony, or some other framework you like, start to familiarise with its structure and use some of its components. Example of the plugin’s Options Page Check out this release: $ git checkout tags/v2.0.0 -b feature/options-page v3.0.0 Custom Database Table We had many situations where we needed to build a plugin for third-party integration. There was no easy way to import and manipulate data except to create custom database tables for it. In this version, you have an example of how to create a new custom database table. When you install the plugin, check the database to see if the new wp_game_score Table was created. Check out this release: $ git checkout tags/v3.0.0 -b feature/custom-db-table v4.0.0 Mapping Entity to Database Table and Validation We can, at this point, just read third-party json and import directly in the database using a query. But this is not safe. What if some data is wrong or missing? It will throw an error and the whole import will be broken. Add a model that matches db table fields so that you can validate each input. Here I used the Symfony Validator component to validate model class and the Symfony Serializer component to turn data back and forth from array to object. Check out this release: $ git checkout tags/v4.1.0 -b feature/mapping-entity-to-db-table v5.0.0 Cron Job When you work with third-party data import, you usually need a cron job to run the import regularly. Cron job service with custom schedule example, interface and example for cron job command is added in this version. Also, migration for the cron jobs upon plugin upgrade. If you like to test and run a cron job manually, install some Advanced Cron Job Manager plugins. Find the cron job with your plugin prefix in its name and execute it The custom table should be now filled with dummy data Check out this release: $ git checkout tags/v2.0.0 -b feature/cron-job v6.0.0 Database Migration After some time, when your custom tables are already in production and filled with data you might need to change something. Rename existing fields or add a new one. In that case, you can’t just delete the table and create a new one. In this version, a system continuously checks if there is a new database migration class and runs its methods. In this way, all that you need to do each time when you need a migration is to create a new class with a given interface and structure and add your logic inside. The version in this class name should be the same as the one you are upgrading the plugin to.You can read the explanation inside the interface prepared for these migration classes. As soon as you install this new version in wp admin, you can check the database to see if there is a new field called wp_user_id and to confirm that all data is intact. Check out this release: $ git checkout tags/v6.0.0 -b feature/database-migration Building Your WordPress Plugin Skeleton or Use Ours for the Start This work is never finished or perfect. But even a small start will help new developers on the project to understand where all the logic should go. This is the way to get them into your mind right from the start and get that ahaaa eect. I hope this will help you to build some of your own skeleton for your team. You can always use ours for a start. Anka Bajurin Stiskalov Engineering Lead at Q. Passionate about developing with a focus on making life easier for fellow developers. Always looking for ways to streamline workflows and boost productivity — let's build smarter together! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 1, 2025 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 1, 2025 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Handling Authentication State With go_router and Riverpod - Tech Consulting and Software Engineering URL: https://q.agency/blog/handling-authentication-state-with-go_router-and-riverpod/ This blog post touches on setting up and handling authentication state and ensuring some routes can be accessed only when logged in using go_router and Riverpod. Handling Authentication State With go_router and Riverpod | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Handling Authentication State With go_router and Riverpod Handling Authentication State With go_router and Riverpod March 12, 2024 — 9 min read Started using go_router for navigation and Riverpod for state management in your project, but struggling how to properly set up and handle authentication state and make sure some routes can be accessed only when logged in? Our choice for state management in Flutter development is Riverpod and recently we have decided to give go_router a go as our navigation solution. Till now we have used many packages for navigation in our applications, including Navigator 1.0, auto_route and Beamer but neither of them fulfilled our needs completely and at the same time remained simple enough not to have to spend too much time understanding how to work with it or how to add a new route when necessary. There comes go_router which has official Flutter team support and it is pretty simple to get started with. However, handling the application’s main authentication state in cooperation with Riverpod turned out to be a challenge and go_router’s official documentation and resources on the Internet didn’t provide all the answers to our questions so we decided to share our solution to it. Handling Authentication State Requirements For starters we need to define what we want to achieve and then we will see how to do it. In each moment our authentication state will have one of the following values: Initial state – AuthStateInitial Authentication in progress – AuthStateAuthenticating Authenticated state – AuthStateAuthenticated (usually can hold User object) Unauthenticated state – AuthStateUnauthenticated import 'package:equatable/equatable.dart'; sealed class AuthState extends Equatable { const AuthState(); } final class AuthStateInitial extends AuthState { const AuthStateInitial(); @override List get props => []; } final class AuthStateAuthenticating extends AuthState { const AuthStateAuthenticating(); @override List get props => []; } final class AuthStateAuthenticated extends AuthState { const AuthStateAuthenticated(); @override List get props => []; } final class AuthStateUnauthenticated extends AuthState { const AuthStateUnauthenticated(); @override List get props => []; } This is how it will look like in the code, sealed class AuthState with four classes extending it. We then need a method to be called immediately after the application has been started to find out whether the user is already authenticated or not and update the authentication state accordingly. Along with the method to update our authentication state at app start we want to be able to handle navigation redirects to decide whether the user should be able to access some page or not based on his authentication status. In other words we want to “protect” some routes and leave some routes open for everyone. AuthNotifier with Authentication State Implementation The requirements mentioned above will be met through our AuthNotifier class which will hold authentication state and extend Riverpod’s Notifier class. In order for AuthNotifier to be compatible with go_router and to be able to notify go_router to refresh every time AuthNotifier’s state changes, AuthNotifier must implement the Listenable protocol. By doing that, the whole AuthNotifier instance can be passed as refreshListenable parameter in GoRouter’s constructor. If you would like to use the good old StateNotifier instead of the newer Notifier class, you won’t be able to because StateNotifier can’t implement Listenable . To see the differences between StateNotifier and Notifier and how to switch to a newer solution, visit our previous blog post ( Migrating From StateNotifier to Notifier in Riverpod 2.0 With Unit Tests ). To implement the Listenable protocol, our AuthNotifier needs to override addListener(VoidCallback listener) and removeListener(VoidCallback listener) methods. The idea is to call the listener provided in addListener method when the authentication state changes. That way go_router will be informed the AuthState change has occurred and redirect (which we will see below) to the exact page we want. Here we can see how our basic AuthNotifier looks so far. import 'package:flutter/foundation.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:my_app/features/auth/data/repository/auth_repository.dart'; import 'package:my_app/features/auth/domain/notifiers/auth_state.dart'; final authNotifierProvider = NotifierProvider( () => AuthNotifier(), ); class AuthNotifier extends Notifier implements Listenable { late AuthRepository _authRepository; VoidCallback? _routerListener; @override AuthState build() { _authRepository = ref.watch(authRepositoryProvider); return const AuthStateInitial(); } @override void addListener(VoidCallback listener) => _routerListener = listener; @override void removeListener(VoidCallback listener) => _routerListener = null; } Checking Authentication State When Applications Starts As we mentioned in the requirements above, we need a method that will check if the user has been authenticated, update authentication state accordingly and refresh go_router through a Listenable listener callback. import 'package:flutter/foundation.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:my_app/features/auth/data/repository/auth_repository.dart'; import 'package:my_app/features/auth/domain/notifiers/auth_state.dart'; final authNotifierProvider = NotifierProvider( () => AuthNotifier()..checkIfAuthenticated(), ); class AuthNotifier extends Notifier implements Listenable { late AuthRepository _authRepository; VoidCallback? _routerListener; @override AuthState build() { _authRepository = ref.watch(authRepositoryProvider); return const AuthStateInitial(); } Future checkIfAuthenticated() async { state = const AuthState.authenticating(); final result = await _authRepository.checkIfAuthenticated(); result.fold( (failure) { state = const AuthStateUnauthenticated(); _routerListener?.call(); }, (_) { state = const AuthStateAuthenticated(); _routerListener?.call(); }, ); } @override void addListener(VoidCallback listener) => _routerListener = listener; @override void removeListener(VoidCallback listener) => _routerListener = null; } As shown in the code snippet above, AuthNotifier has dependency on AuthRepository and when instantiated, Provider immediately calls AuthNotifier’s checkIfAuthenticated() method which then calls AuthRepository’s checkIfAuthenticated() method where the check if the user is already logged in can be made and based on the result of this method, AuthNotifier updates its state to AuthStateUnauthenticated or AuthStateAuthenticated and triggers go_router’s listener callback. Handling Redirects To complete our requirements we are still missing one piece of the puzzle, maybe the most important one. After updating AuthNotifier’s authentication state, go_router needs to know which page to show to the user if he was successfully logged in or not and also on any subsequent redirect whether the user should be able to access that certain route or not. To accomplish this, our AuthNotifier will have another method which will be called simply redirect with two input parameters, GoRouterState and bool showErrorIfNonExistentRoute and it will return optional String, some route name if the user should be redirected somewhere else (e.g. to LoginPage route if he doesn’t have the access for certain route) or null if the user is allowed to access that route. Our use case will be that the user not being logged in can access only login, register or few similar pages and won’t be able to access all the other pages without being authenticated. import 'package:flutter/foundation.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:my_app/common/domain/providers/go_router_provider.dart'; import 'package:my_app/features/auth/data/repository/auth_repository.dart'; import 'package:my_app/features/auth/domain/notifiers/auth_state.dart'; import 'package:my_app/features/home/presentation/home_page.dart'; import 'package:my_app/features/login/presentation/login_page.dart'; final authNotifierProvider = NotifierProvider( () => AuthNotifier()..checkIfAuthenticated(), ); class AuthNotifier extends Notifier implements Listenable { late AuthRepository _authRepository; VoidCallback? _routerListener; @override AuthState build() { _authRepository = ref.watch(authRepositoryProvider); return const AuthStateInitial(); } Future checkIfAuthenticated() async { state = const AuthState.authenticating(); final result = await _authRepository.checkIfAuthenticated(); result.fold( (failure) { state = const AuthStateUnauthenticated(); _routerListener?.call(); }, (_) { state = const AuthStateAuthenticated(); _routerListener?.call(); }, ); } String? redirect({ required GoRouterState goRouterState, required bool showErrorIfNonExistentRoute, }) { final isAuthenticating = switch (state) { AuthStateInitial() || AuthStateAuthenticating() => true, _ => false, }; if (isAuthenticating) return null; final isLoggedIn = switch (state) { AuthStateAuthenticated() => true, _ => false }; final loggingIn = goRouterState.matchedLocation == LoginPage.routeName; if (loggingIn) { if (isLoggedIn) return HomePage.routeName; return null; } final routeExists = _routeExists(goRouterState.matchedLocation); final loginRoutes = goRouterState.matchedLocation.startsWith(LoginPage.routeName); if (isLoggedIn && routeExists) { return loginRoutes ? HomePage.routeName : null; } return loginRoutes || (showErrorIfNonExistentRoute && !routeExists) ? null : LoginPage.routeName; } @override void addListener(VoidCallback listener) => _routerListener = listener; @override void removeListener(VoidCallback listener) => _routerListener = null; // temporary solution https://github.com/flutter/flutter/issues/117514 bool _routeExists(String route) { try { return ref .read(goRouterProvider) .configuration .findMatch(route) .matches .isNotEmpty; } catch (err) { return false; } } } Here you can see updated AuthNotifier with the redirect method which at first checks whether the authentication state is in initial or authenticating status and if it is, it just does nothing (the redirect method will be called again when the state gets updated to authenticated or unauthenticated). Otherwise it checks if the user is logged in and if logging in is happening right now. If both is true, the user is redirected to the HomePage route which is our root page being shown when the user is authenticated. If the user is currently not logging in, the method checks if the route exists via _routeExists method (at the moment, there is no more convenient way to get this information, for more info check this ) and if the current redirect should happen to one of the login routes. Based on this information, if the user is logged in and the route exists, he will be allowed to access the desired route or be redirected to the HomePage route if the current redirect is to one of the login routes. The last check relates to the case when the user is not logged in or the route doesn’t exist, based on the showErrorIfNonExistentRoute the redirect method will either let the user access that login route or non existent route (for which you can setup your 404 page through GoRouter’s constructor, by using errorBuilder or errorPageBuilder parameter), otherwise redirect it to LoginPage route. Redirect method written like that allows us to handle all the cases regarding our authentication state, where to redirect the user when the application is started, what to do after being logged in or logged out and whether the route can be accessed or not based on the current authentication status. Instantiating GoRouter Now when we have all required pieces implemented we can glue them together and instantiate GoRouter. import 'package:flutter/foundation.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:my_app/features/auth/domain/notifiers/auth_notifier.dart'; import 'package:my_app/features/home/presentation/home_page.dart'; import 'package:my_app/features/login/presentation/login_page.dart'; final goRouterProvider = Provider((ref) { final authNotifier = ref.read(authNotifierProvider.notifier); return GoRouter( debugLogDiagnostics: kDebugMode, initialLocation: HomePage.routeName, routes: [ GoRoute( path: HomePage.routeName, builder: (context, state) => const HomePage(), ), GoRoute( path: LoginPage.routeName, builder: (context, state) => const LoginPage(), ), ], refreshListenable: authNotifier, redirect: (context, state) => authNotifier.redirect( goRouterState: state, showErrorIfNonExistentRoute: true, ), ); }); Here you can see the Provider which provides GoRouter object and references AuthNotifier via its provider and passes it to GoRouter’s constructor as a refreshListenable object and also calls its redirect method each time GoRouter needs to redirect and decide where to navigate the user. Conclusion In the few chapters, you saw how to handle authentication state in our application and how to integrate it with routing. First we wrote a few requirements that needed to be met and then step by step wrote a solution for connecting go_router and Riverpod to complete our initial challenge. P.S. We didn’t show how to write login and logout methods in AuthNotifier but they should have almost the same logic as in checkIfAuthenticated() method, at first the state should be updated to AuthStateAuthenticating and after calling and getting AuthRepository’s login or logout result, the state should be updated to either AuthStateUnauthenticated or AuthStateAuthenticated, depending if you are writing login or logout method and if that method finished successfully or not. Ivan Celija Ivan is a senior Flutter developer at Q, with over 5 years of experience in Flutter development and prior expertise in native iOS and Android. When not working, Ivan enjoys reading a good book, taking long walks, and watching football matches or F1 races. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 12, 2024 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 12, 2024 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Hello, New York City - Tech Consulting and Software Engineering URL: https://q.agency/blog/hello-new-york-city/ Q opens a new office in New York City, expanding its US presence and highlighting successful e-learning projects for Coca-Cola, Facebook, and Walmart. Hello, New York City | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Hello, New York City Hello, New York City January 27, 2019 — 1 min read As of January, we are happy to call New York City our new home! Our new oice will allow us to continue our growth and provide our clients with the highest level of service in the US, just like we did for Coca-Cola, Facebook, Walmart, and others. For Coca-Cola , a global leader in the beverage industry, we developed and implemented an interactive e-Learning HTML solution. Instead of traditional learning procedures, Coca-Cola wanted to provide its employees with an interactive platform for onboarding new marketing department employees. Together with Irish eLearning agency, Interactive Services, we created an eLearning app for Facebook where new employee gets an early access (2 months before becoming an oicial Facebook employee), picks a character and goes through series of videos, texts, HTML5 games and quizzes. This way new employee learns about Facebook and Facebook’s culture, collects points while having fun and when they collect enough number of points, they are successfully on-boarded. Also, our team of frontend developers built an interactive solution for Walmart. We implemented e-learning games focused on getting new employees up to speed with the Walmart business processes. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 27, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 27, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Bad Communication with Clients Impacts Delivery - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-bad-communication-with-clients-impacts-delivery/ From delivery time to quality of build, bad communication with clients impacts all aspects of product development. How Bad Communication with Clients Impacts Delivery | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Bad Communication with Clients Impacts Delivery How Bad Communication with Clients Impacts Delivery December 16, 2022 — 5 min read Your product might be late. Your product might be of subpar quality. Even worse, your product might not arrive at all, or there might not even be a product. All of these are potential endings to product development founded upon bad communication . Let’s look at a few cases from our latest project and see the (potential) damage done when things were communicated poorly or not at all. Listen to the expert! Nah, it’ll be fine… THE ISSUE : There were no development and staging environments set up. Instead, we were working with the client’s production database, however not directly, but our requests were being sent to a clone of the live version. This clone was then supposed to mirror and sync with the actual production database, but we were never sure of the directions of this mirroring and syncing mechanism. WHAT WAS COMMUNICATED : Even though most of the team brought this up as an issue, the expert for testing functionalities (our QA) raised this several times, especially to the client arguing that it will be nearly impossible for him to do his job properly. The client wasn’t concerned about this at all. He ignored most of the complaints and simply reassured us that there was nothing to worry about and that it would all be ok. THE DAMAGE : Our QA never knew what would and wouldn’t be reflected onto the production environment. Thus, he couldn’t figure out if the feature we developed wasn’t working or if it was just the client’s environment being out of sync again. His testing capabilities were limited too since he was afraid of tampering with live users and their data. Consequently, the frontend team had to go back and forth and work on features that were supposedly finished months ago. This did not bode well for the quality of the solutions and the codebase nor for the team’s morale. Oh, and lots of time and money were lost, obviously. Distance doesn’t separate people, silence does. THE ISSUE : The project is a dashboard application. The client wants a quality-of-life feature that automatically remembers the latest dashboard each user used, so that every time they log back in, they are redirected to where they left off. The optimal solution for this feature is to have the last used dashboard saved on the backend. The client never mentioned if this feature was available on his backend and we never asked. Instead, we put our heads down and got to work. WHAT WAS COMMUNICATED : The client insisted on this feature, emphasizing its importance and the development team complied. Outside of that, nothing else was communicated . We went in blindly and the client never even considered our obliviousness. THE DAMAGE : We managed to develop a second-rate solution where we saved the latest used dashboard to the user’s local storage. And, this worked fine when there was only one user using a single PC. However, the moment our QA and client started testing this feature with various accounts on the same PC, all the user data conflicts emerged and bugs surfaced. We tried our best to make it work with fixes upon fixes, however, the limit of this local storage feature were reached. We threw up our hands in the air and proclaimed that nothing more could be done. However, one team member, while fiddling with the client’s live version of the dashboard, noticed that this feature was working flawlessly on his part. We immediately investigated this and found out that he had his own backend solution for this, which we desperately needed. So, we jumped ship and documented and adopted this solution right away. Unfortunately, all these fixes and silence cost the project lots of development time and money again . I Just Called To Say I Love You… THE ISSUE : In order to avoid going back and forth between finished features and/or components, which can quickly burn out your development team, a deal was struck between the client and the development team that the client should sign off on each feature and/or component and how their solution was envisioned (design-wise) before the development team gets to work. However, the client would sometimes go completely silent for days on end. WHAT WAS COMMUNICATED : Again, nothing. The client failed to inform us that we would be out of touch with each other for days, which also meant that the client couldn’t respond to our pleas for approval. In fact, the client couldn’t respond at all, so we had no idea what was going on. THE DAMAGE : Development time (and money, of course) was lost on debating which feature or component should be developed next without the client. Obviously, our choice wasn’t always correct, which meant that every time the client was unsatisfied with our solutions, we had to go back and redo them, which cost even more development time and money. This also sometimes left a bad taste in our mouths when we were starting up work on a new feature or component. Communication works for those who work at it Even though we set up some pretty good ground rules with the client regarding communication , sometimes this failed us. Or, in all actuality, sometimes we failed to meet the standards we had set for ourselves. This is proof that even a team of professionals and a financially invested party could not deliver completely on their promise, resulting in some damages, which could have been avoided. However, the important thing is to start mitigating the damages by looking for open discussion and solutions, fixing the communication gaps, and keeping the communication channels open. Zvonimir Prpic Zvonimir Prpić is a Frontend Developer at Q agency. He loves working with React, and above all takes immense pride and joy in changing the color of a button. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 16, 2022 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 16, 2022 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How being a fully agile company helps going full remote - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-being-a-fully-agile-company-helps-going-full-remote/ Learn how Q’s agile approach made the transition to fully remote work smooth and effective. How being a fully agile company helps going full remote | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How being a fully agile company helps going full remote How being a fully agile company helps going full remote April 19, 2020 — 5 min read Having more than 130 people, with dozens of them who enjoy working from home, and many living far away from the main oice, we had to establish a beautiful and functional relationship with being remote. Q was very open to remote work long before the Corona outbreak. Having more than 130 people, with dozens of them who enjoy working from home, and many living far away from the main oice, we had to establish a beautiful and functional relationship with being remote. During these hard times, when the EU closed its borders and the situation in some countries is alarming, Q decided to go full remote a few weeks ago and close the oice. The concept of working remotely or working “on the go“ isn’t a new trend for Q; it’s more the status quo since 2013. Is it a disaster or an easygoing process? To make remote work successful, Q established some crucial techniques and processes on how to handle and organize everyone like they are only a few meters apart. The one thing that helped the most is being agile to the fullest. Scrum ceremonies take a significant part in the agile software delivery process and provide a structure for teams to get work done and set their expectations and ease team collaboration. Luckily, Qumans transformed into agile fast and smooth, so to go fully remote, we just needed to adapt our working routines in an online form. Agile living style became the only one we know inside the company. Keys to success Remote work opened an opportunity to improve procedures and coordination between departments and teams by clearly defining obligations and responsibilities for each team. Keeping it transparent, let’s talk about the challenges we faced when we faced going full remote: Communication Transparency Meetings Time Management Noting progress and productivity. With the awareness of all the problems mentioned above, we had to react quickly and come up with solutions and tips for all the employees. All those problems were solvable. This is what we did: 1. Communication “Communication is the key!“ — the sentence that you will often hear in our oice. Our policy is that everyone inside the team needs to know the status of everyone else’s work, so that if something happens, or someone needs help, anyone can jump in. Community management is unquestionably important to us, that’s why we work hard to make sure everyone is included in sharing experiences and ideas. Also, we share information about Q’s business status to our people. In these times of crisis, our communication toward employees widened. We want everyone to feel comfortable, engaged, and happy as if they were physically in the oice. Therefore, we adapted our current ways of communication to online formats and even introduced some new ones which helped us be more informed and engaged during this full-remote time. 2. Transparency Being transparent about your work and to your colleagues is a must. Adapting it was a process, but we managed to transfigure everyone to be more open, honest, and straightforward about various operations and their behavior in general. That’s why our management team made sure that not a single meeting was canceled. We are still working on business development daily, meaning we want to upgrade and shorten the process of some of our old procedures, but through an online communication channel. Communication and transparency are key to the importance to build stable production and a bigger business perspective. People and their feeling of satisfaction and happiness are crucial for the company’s business, development, progress, and growth. Employees are the best ambassadors, which is why our responsibility as a company is to make sure people are informed about the situation and procedures. 3. Meetings They could be in the form of 1on1 or a team call. It depends on whether employees work more independently or highly collaborative. Furthermore, calls should be regular and expected, always at the agreed time. The voice of communication is always empathic, trusting, and filled with understanding. Some rules that we established when on calls: Connect a few minutes prior and try to stick to the schedule! Turn o the microphone when not talking and make sure not to speak at the same time. Designate a moderator for each meeting to ensure there is no idle. Try it; it works fantastic! 4. Time Management Despite many perks, we should keep in mind the everyday challenges of remote work, to avoid declines in job performance and engagement. Some of them are lack of face-to-face interaction, lack of access to information, social isolation, distractions at home, or just seeing your sofa. Therefore, we introduced some new ways of interacting with each other through quizzes, travel talks, and online board games. ”Sofa“ problems were faced with five essential rules: Decide on workspace Set work hours Do your morning routine Take breaks Work hard Our HR Specialist wrote a couple of tips and tricks on how to surpass those obstacles, which you can read here . 5. Noting progress and productivity It is useful for all employees to record their progress through daily tasks. Not only for supervising the teams’ work but for better organization of their tasks. Sometimes, things of great importance get unintentionally forgotten, and keeping notes prevents this from happening. To conclude Implementing Agile manifestations in our way of working was the best decision we could make. Agile helped us in being fast and adaptive, which in this remote time is crucial. If you still think about going Agile, don’t think, do it. Marta Juricic She is a marketing and PR enthusiast responsible for developing, implementing, and executing strategic marketing plans. Classy girl with a bit of hood in her, and an attitude which she loses when there’s a dog nearby. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 19, 2020 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 19, 2020 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Business Analysis in Software Development Helps Shape User-Centric Solutions - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-business-analysis-in-software-development-helps-shape-user-centric-solutions/ Discover the role of business analysis in software development, its methods, benefits and best practices to deliver successful products. How Business Analysis in Software Development Helps Shape User-Centric Solutions | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Business Analysis in Software Development Helps Shape User-Centric Solutions How Business Analysis in Software Development Helps Shape User-Centric Solutions January 22, 2025 — 10 min read ‍Business analysis is a rapidly growing market, and has been playing a key role in software development for a while now. In recent years, it’s become crucial in IT, but what is it exactly? It’s more than just changing stakeholder ideas into clear requirements. It makes sure software solutions match the client’s business goals, and both market and user needs. This blog post will help you learn more about the crucial role of business analysis and business analysts in software development — highlighting the purpose, methods, advantages as well as top practices in this field that Q also conducts, leading to a successful and well-executed end product. 1. What is Business Analysis in Software Development? In software development, Business Analysis is fundamentally an in-depth look at the business setting and the project’s goals . Business analysts are here to gather information, explain product requirements and — write down every single one of them. But, it’s more than just documenting things down — business analysis tries to connect what’s your potential client’s goal. For example, increased revenue, higher user interaction, operations optimization, or how exactly software can meet these goals. Due to their broad scope and the fact they’re capable of seeing the ‘bigger picture’, business analysts (BAs) act as a sort of IT consultants for the ever-growing number of companies. By creating a clear strategy and aligning business goals with technical abilities, efficient business analysis sets the stage for successful software solutions. 2. The Role of Business Analysis in the Software Development Lifecycle 2.1 Identifying & Defining Requirements The main goal in business analysis involves identifying and defining requirements, and making them more understandable for the entire team involved in a new project. Development teams need to know project goals well. This task includes working with stakeholders to turn business ideas into structured document — product backlog that presents the solid basis of the MVP solution. The BA identifies functions as must-haves, should-haves, could haves or those that will not be included at the current stage . Business analysis avoids misunderstandings — as these lead to rework or expensive project overruns. 2.2 Mediating Between Stakeholders & Development Teams Business analysis acts as a vital connection between stakeholders — who understand business goals — and development teams — who create the technical solution. For this, the crucial requirements that need to be met are: Explaining business goals to developers to help them grasp the “why” behind certain features. Communicating technical limits to stakeholders is essential to highlight what fits specific budgets or timelines and what doesn’t. Open lines of communication prevent isolation among teams working on a project — aligning all parties together. 2.3 Strategic Planning & Risk Mitigation Business analysis provides another key benefit — risk mitigation . BAs study different situations to find potential problems, such as user demands that cannot be met or system integration obstacles. The goal is to predict issues early , create strategies to handle them, and prepare backup plans. This way, the project can adapt faster to changes with objectives and ever-changing market trends in mind. 3. Key Responsibilities of a Business Analyst Business analysis describes a field, while the term business analyst denotes the person doing these tasks. Their daily duties might involve: Collecting business requirements. BAs interview people, hold workshops, and review current documents to find out what the software’s purpose is and what the project needs to achieve. Writing down requirements. They’re defining the in/out of scope requirements covering functional, non-functional, service and integration requirements within. Studying market & user needs. Research helps them understand better how market trends or tech shifts could guide product strategy. Creating process models. Methods like Business Process Modeling (BPM) or prototyping show complex workflows and help clarify software features. Suggesting solutions. Through stakeholder analysis and root-cause evaluations, they suggest possible solutions that balance cost, scope, and performance. Helping communication. BAs act as the bridging gap factor between business along with technical teams — facilitating their communication. Reviewing results. After the development phase, they take part in testing and user acceptance to confirm the final product meets initial specifications. 4. Why Business Analysis is Essential 4.1 Enhances Efficiency When there are no clearly provided requirements, development teams run the risk of wasting their effort on features that don’t have a direct impact on the business value. By providing a structured breakdown of the tasks that are to be prioritized first, business analysis not only clarifies, but also decreases the chance of reassessing the work, and it helps make the workflows more efficient . The same effectiveness is seen in budget allocation. The right prioritization of tasks is a guarantee for the right resource channeling to the areas that provide the highest return. 4.2 Lowers Costs & Risks Projects initiated without proper requirement analysis may encounter high-cost threats caused by blind spots. An example of this is the underestimation of integration complexity which then results in prolonged timelines and additional resources required to continue working on the project. But this is where business analysis steps in, and delivers ideas to investigate the market settings and project challenges. Essentially, it is the factor that helps reduce unforeseen expenditures . 4.3 Drives Innovation & Improvement Business analysis can sometimes open opportunities for new integrations or improvements that otherwise can go unnoticed. Business analysts can also suggest features that would make the software more competitive by examining the current processes, analyzing workflows, and using industry benchmarks for best practices . Be it the exploration of a technology that’s not being used to its full potential, or the identification of a user segment that remains unexplored, business analysis is constantly pushing innovation. 4.4 Ensures Alignment with Business Goals The primary indicator for a software product’s success is its full compliance with both business and user requirements . Business analysis makes sure these priorities remain fundamental. Be it the optimization of an e-commerce platform to raise its conversion rates or improving internal enterprise systems to streamline operations. BAs are first and foremost interested in getting the best possible results from a project, so they continuously validate requirements, but always with the main, all-encompassing strategy in mind. 5. Essential Frameworks and Tools in Business Analysis Business analysts often leverage standardized techniques and tools to ensure that they capture relevant information accurately and communicate it effectively: MoSCoW analysis: Categorizing tasks and requirements into Must-haves, Should-haves, Could-haves, and Won’t-haves for clear prioritization. Business Process Modeling (BPM): Mapping out current and future processes for clarity on workflow, roles, and potential bottlenecks. Prototyping & wireframing: Building low-fidelity representations of the software to visualize user flows and gather feedback early. SWOT analysis: Reviewing Strengths, Weaknesses, Opportunities, and Threats relevant to the software’s strategy. User stories & use cases: Presenting requirements from an end-user’s perspective, outlining specific goals and interactions. Gap analysis: Identifying discrepancies between the current state and the desired future state to shape development roadmaps. Each technique brings a specific purpose. Each of them can be chosen based on project size, complexity, and organizational culture. 6. Best Practices for Effective Business Analysis 6.1. Getting Stakeholders Involved Early on & Frequently The act of engaging stakeholders into the process can result in getting the precise picture of their specific needs. At the start of the project, you can conduct workshops, interviews, and brainstorming sessions. Communicate openly to adjust quickly if business goals change. 6.2 Embracing an Iterative Approach Agile or Scrum methods split development into short, iterative cycles; numerous modern software projects use these two techniques. Business analysts can also help with refining user stories, backlog grooming, plus they make sure each sprint has focus on features that bring measurable business value . An adaptive mindset lets teams handle changes without making the whole project go off track. 6.3 Validating Assumptions & Requirements Regular checks if documented needs match the potentially changing business environment are crucial. Why? Because market shifts, regulatory updates or keeping up with competitors often need modifications in your project requirements. Updating a backlog of requirements — along with constant stakeholder feedback, leads to a more resilient project plan. 6.4 Using Clear & Consistent Documentation Whether you create a detailed product backlog, clear and consistent writing is key. Set up a version control system for all your documents so every team member is familiar with current requirements. An organized repository helps new stakeholders or developers onboard much more easily. 6.5 Promoting Cross-Functional Collaboration Of course, business analysis involves more than just bridging communication gaps, but nurturing efficient teamwork is and remains a pivotal task. To do this, you can promote regular stand-ups, joint planning sessions or shared dashboards. Close collaboration with UI/UX designers, developers, and project managers keeps all decisions in line with the main project goals. 7. How to Measure the Success of Business Analysis Here’s how you can determine whether business analysis has been ‘efficient’ with these key metrics: Requirement stability: A low rate of requirement changes during development often indicates thorough initial analysis. On-time and on-budget delivery: If the project finishes as planned, business analysis likely contributed to realistic estimation and scope management. User satisfaction: Post-launch feedback provides direct insights into whether user requirements were accurately captured. Return on investment (ROI): High ROI suggests that the final product met or exceeded strategic targets, thanks in part to well-defined requirements. Business analysis plays a key role in the software development lifecycle. Why? Because it helps achieve these outcomes with much higher predictability. 8. How Q’s Business Analysts Empowered Stepathlon’s Growth Stepathlon is our partner and a digital fitness platform that offers fitness challenges, open to everyone regardless of age, gender, location or physical ability. By taking steps and engaging in other wellness activities, participants move around a customised virtual course, earning points and engaging with the community. Q’s BAs played a critical role in bridging the gap between the client’s vision and the development team, carefully defining 15 epics and 83 user stories during the discovery phase. Through a series of workshops — 11 in total, including sessions on user research, third-party integration discussions, and backlog prioritization. The BA translated the client’s objectives into actionable deliverables. This process included creating eight categories of user flows (e.g., onboarding, race maps, and post-race screens) and preparing technical documentation, such as infrastructure and integration diagrams. Our BAs also collaborated with stakeholders to confirm user permissions, finalize mobile and web app user flows, and align on third-party integrations (e.g., Terra and LiveLike). By identifying challenges early, such as integration complexities, the BA team ensured smooth communication between the client and technical teams while prioritizing features that would deliver maximum business value . Their efforts culminated in a comprehensive development roadmap with detailed estimates (1,156–1,755 man-days for MVP), ensuring scalability, security, and alignment with the client’s goals. This structured approach not only streamlined development but also paved the way to a successful product launch, demonstrating the BA’s pivotal role in delivering a solution that exceeded expectations. Discover how we teamed up with Stepathlon to create an impactful solution — read the full case study on our website . Conclusion Business analysis in software development goes beyond support functions — it holds the key to aligning business goals, technical requirements, user demands, and strategic innovation. Investing in comprehensive BA practices helps companies mitigate risks, improve product quality, and make sure each feature has a clear business purpose. Business analysts drive success through interviews, documentation, facilitation — along with validation — benefiting the entire team with better clarity and productivity. As software projects become more complex, and competitors’ products also become more complex, the demand for skilled BAs grows stronger than ever. Engaging stakeholders early, iterating solutions, and validating requirements is key for teams to create software solutions that meet technical specifications and deliver true business value and impact for your client. Let’s team up to turn your ideas into impactful products with the power of our expert business analysts. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 22, 2025 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 22, 2025 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Can AI Boost Brand Design? - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-can-ai-boost-brand-design/ In this blog, we will explore how artificial intelligence (AI) can help create a brand and visual identity. How Can AI Boost Brand Design? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Can AI Boost Brand Design? How Can AI Boost Brand Design? September 18, 2023 — 9 min read Artificial intelligence (AI) has been at the forefront of transforming various industries, and the world of branding and visual identity is no exception. In this blog, we will explore how artificial intelligence can help create a brand and visual identity. The field of logo design has historically thrived on human ingenuity and artistry. Creating a visual identity for a brand often involves creativity and a deep understanding of human emotions and perceptions . However, the emergence of artificial intelligence (AI) has brought a new dimension to the world of design. While AI may not capture the unique essence of a brand on its own, I believe it can serve as a valuable aid to designers striving to create effective and consistent branding materials . So how does artificial intelligence enter the world of logo design and what unique advantages does it offer? Logo design is an interplay of simplicity, memorability, and relevance to the core of the brand . AI can be a good collaborator, offering a symphony of creative possibilities . Design Assistance AI-powered tools can provide design suggestions and generate logo concepts based on your brand name, industry, and preferences. These suggestions can serve as a starting point for your logo design. AI can draw inspiration from a vast database of design styles and trends, offering a wide variety of logo concepts. This variety ensures that you have many creative starting points to choose from. It allows you to quickly explore multiple ideas, saving you time and effort in the initial phase of brainstorming and concept generation. AI offers design suggestions without personal biases or subjective preferences . It relies on data and analysis to make suggestions to help make more objective design decisions. I found the names of the imaginary salons on chat.openai.com . The name “Chic” was chosen as the primary name of the salon, and the name “Cosmetic Heaven” as the headline. I could have asked more but I decided on one. After ChatGPT gave me name suggestions for my salon, I chose Leonardo ai. to begin with, to explore the visual solutions offered to me as inspiration. Choosing a color palette When it comes to enhancing your brand, leveraging the power of AI can involve analyzing your brand’s characteristics and suggesting color palettes that align with your identity and resonate with your target audience . It ensures a choice of colors that conveys the right emotions and messages. It can analyze the psychological and emotional associations of different colors, helping you choose colors that evoke the desired emotions in your audience. For example, warm colors like red or orange can convey energy and passion, while cool colors like blue or green can evoke calmness and confidence. If you already have existing colors, AI maintains the harmony of the selected colors with your existing brand identity. It considers your brand’s primary colors and maintains consistency across all branding materials. It also may take cultural considerations into account to point you to cultural differences in color symbolism, ensuring that your chosen colors are appropriate and resonate positively with a diverse global audience. AI takes color contrast and accessibility standards into account, ensuring your chosen colors meet accessibility requirements for web and print materials. This is especially important for reaching a wider audience, including those with visual impairments. It can suggest complementary color palettes that create harmony and balance in your logo design. Font selection When selecting a font that reflects your brand’s tone and personality, AI comes into play by considering factors such as legibility, aesthetics, and brand consistency to recommend suitable options. It considers the tone and personality of your brand when suggesting fonts, as well as font legibility, ensuring that the selected font is easy to read, especially in different sizes. This is crucial for maintaining readability in various applications. It can also help you with font aesthetics, taking into account factors such as kerning, character spacing, and overall visual appeal. This ensures that the font complements the overall design . It can suggest fonts that work well in both digital and print media, providing versatility in logo usage. Style recommendations By delving into your brand positioning, AI can provide insights and recommend design styles that align seamlessly with your core values . Whether you’re aiming for a minimalist, vintage, or modern look, AI can provide guidance. It can analyze your brand’s positioning, values, and mission to suggest design styles that closely align with your brand identity. This ensures that the visual elements of your logo match your core message . It can provide guidance on choosing a design style that not only reflects your brand but also works well across different apps and platforms . The AI evaluates the aesthetic appeal of different design styles. It considers factors such as balance, proportion, and visual harmony to suggest styles that are visually pleasing. AI can recommend design styles that are known to effectively engage your target audience . For example, if your audience prefers a modern and clean look, AI can suggest minimalist design styles. It can offer suggestions for design styles that have a timeless quality, ensuring your logo remains relevant and effective for years to come . AI can introduce you to innovative design styles that push creative boundaries while aligning with your brand identity. This can help your logo stay fresh and innovative . Scalability AI-generated logos are usually vector-based, making them easily scalable without losing quality . This ensures that your logo looks great on different platforms and sizes. Consistency Maintaining visual consistency across all branding materials is made possible with the assistance of AI. It ensures that your logo’s colors, fonts, and design elements align seamlessly with those found in other marketing collateral. AI-driven design tools can generate design elements that are consistent with your logo. For example, if your logo has a certain geometric shape, AI can help create complementary design elements that incorporate the same shape, promoting visual harmony . It can generate branding templates for various materials, such as business cards, letterheads, social media banners, and more. These templates ensure that your brand’s visual identity is applied consistently across different communication channels. It can automate the process of applying brand elements to different materials, reducing the risk of human error and ensuring that branding guidelines are consistently followed. As your brand expands across different digital and print platforms, AI can seamlessly adjust branding elements, ensuring they look their best in each medium while maintaining a cohesive visual identity . For brands with a global reach, AI can help adapt branding materials to suit different cultural and linguistic requirements , ensuring that the core brand identity remains intact . It can be useful for creating overarching brand guidelines that outline how the logo, colors, fonts, and design elements should be used consistently. This helps internal and external stakeholders adhere to the brand’s visual standards . An AI-created logo for the fictional beauty salon Chic. Artificial intelligence found the name of the salon, and the subtitle and proposed various variants of the logo Speed and cost-effectiveness Logo design using artificial intelligence can save time and money compared to traditional design processes. It can quickly generate multiple logo concepts, allowing you to efficiently explore different options. Market research By analyzing your industry and competitor logos, AI can pinpoint design trends and distinctive elements to set your logo apart . It can help identify unique design elements or visual aspects that are underutilized or missing in your industry. This information can guide you in creating a logo that stands out and positions your brand in a unique way. It can analyze symbols and icons used in logos in your industry, as well as help you avoid overused symbols and discover new visual elements that resonate with your brand’s mission and values. AI can collect and analyze user feedback and preferences regarding logos in your industry. This user-centric data helps you understand what your target audience finds interesting and engaging. With market research insights, you can create a logo that strategically positions your brand to gain a competitive edge . This may include highlighting unique selling points or addressing pain points identified in the market. AI can support an iterative design process based on market feedback. It allows you to refine your logo to align with market preferences and trends, increasing its effectiveness over time . Feedback and Data Analysis Collecting user feedback and logo performance data can be accomplished through AI tools. This data can inform iterative design improvements. AI tools can collect user feedback through surveys, online reviews, and social media comments. It can analyze the sentiment of user feedback, determining whether the response is positive, negative, or neutral. This helps you gauge the overall feel of your logo design. By analyzing feedback, AI can determine specific aspects of your logo that resonate with users and those that may need improvement. It helps you understand which logo elements connect with your audience . It can track key performance metrics related to your logo, such as social media engagement rates, logo ad click-through rates, and conversion rates on your website. These metrics show the impact your logo has on your audience. AI-driven A/B testing lets you experiment with different logo variations and gather data on which design elements perform best . This data-driven approach helps you improve your logo over time. Based on user feedback and performance data, AI can guide you in incremental design improvements. Data-driven decisions Turning data into actionable insights for informed design decisions is a task that can be accomplished by artificial intelligence. This data-driven approach reduces guesswork and ensures design changes are strategic . Logo design is an ongoing process. Data analysis using artificial intelligence ensures that your logo remains effective by constantly adapting to changing audience preferences and market dynamics. Final Reflections and Takeaways AI is a valuable assistant to designers, enhancing their creative capabilities and streamlining their workflow. However, it is important to emphasize that AI is here to complement and support designers , not to replace them. Designers bring unique creativity, intuition, and a deep understanding of human emotions and culture to their work. AI can assist by automating repetitive tasks, generating design suggestions, and providing data-driven insights, but it is the human touch that ultimately breathes life and meaning into design . The collaboration between AI and designers is a powerful synergy that empowers designers to reach new heights in their creative endeavors while maintaining their irreplaceable role in the creative process. After all, it is humans who came up with artificial intelligence, not artificial intelligence humans. Marijana Smolic Experienced designer who likes to create new brands, visual identities and also various digital interfaces. A big fan of art, graphic design, and world design in general. Marijana is also interested in animation and everything related to photography. In her free time, she likes hiking, spending time in nature, and baking cakes. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 18, 2023 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 18, 2023 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How ChatGPT Can Help You Become a Better Flutter Developer - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-chatgpt-help-you-become-a-better-flutter-developer/ Learn how Flutter developers can benefit from ChatGPT. How ChatGPT Can Help You Become a Better Flutter Developer | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How ChatGPT Can Help You Become a Better Flutter Developer How ChatGPT Can Help You Become a Better Flutter Developer February 28, 2023 — 14 min read ChatGPT is an advanced machine-learning model that can generate human-like text. Developed by OpenAI , this model has been trained on a wide variety of texts and is capable of producing grammatically correct and contextually relevant sentences. In this blog post, I will show you in what ways ChatGPT can be used as a tool for Flutter developers . Introduction As a developer, you spend most of your time googling the answers and searching the internet for possible solutions. What if I told you that there is a new, better way of getting answers? One where the machine is talking to you like a human would, explaining things in a grammatically correct and contextually relevant way and providing correct answers in a fraction of the time it would take you to find them searching throughout the vast lands of the internet? Meet ChatGPT . Picture generated with ChatGPT ChatGPT is a state-of-the-art natural language processing model developed by OpenAI. It uses machine-learning techniques to understand and generate human-like text. ChatGPT can be fine-tuned to perform a wide range of natural language tasks such as text generation, text completion, text classification, and more. It’s been trained on a large corpus of text data and can generate coherent, human-like text that often makes it hard to distinguish from text written by a human. Of course, all this sounds pretty cool, but how exactly can we use ChatGPT as Flutter developers? It’s as easy as typing in a prompt with instructions in natural language, describing what you want to achieve. The AI will follow your exact instructions, so the more detailed you are in the prompt, the better the outcome will meet your needs. Let’s check out some use cases! Produce blocks of code using natural language One of the first ways ChatGPT can help you out is by writing Flutter widgets for us. Here, I simply ask ChatGPT to create a Flutter widget that has an image and some text on top of that image. Prompt 1 Can you create a Flutter widget that has an image as a background and some text that is centered on top of it? Answer 1 Yes, here is an example of a BackgroundImageWithCenteredText widget in Flutter that takes an image URL, text, and textStyle as required arguments and renders an image as a background and text on top of it: import 'package:flutter/material.dart'; class BackgroundImageWithCenteredText extends StatelessWidget { final String imageUrl; final String text; final TextStyle textStyle; BackgroundImageWithCenteredText({ required this.imageUrl, required this.text, required this.textStyle, }); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( image: DecorationImage( image: NetworkImage(imageUrl), fit: BoxFit.cover, ), ), child: Center( child: Text( text, style: textStyle, ), ), ); } } In this example, a Container widget is used with a BoxDecoration to set the background image. The DecorationImage widget is used with the NetworkImage to set the image and the BoxFit.cover is used to fill the entire container area. The Center widget is used to center the text on top of the image. Please note that for this to work you should have the correct dependencies for image_picker and network package in your pubspec.yaml file. You can also use AssetImage instead of NetworkImage if the image is stored locally in your project. We can clearly see that not only did ChatGPT provide us with an out-of-the-box Flutter widget , but it also described what the widget is doing, which dependencies are required for it to work, and how to interact with it. Awesome, isn’t it? Let’s see some more examples at work. Optimize blocks of code Here I asked ChatGPT to optimize the widget it just generated in Prompt 1 . Now, keep in mind, I did not need to specify which widget and how to optimize it , I simply continued our conversation like I would with a person and asked the next question: Prompt 2 Can you optimize this widget? Answer 2 Here is one way to optimize this widget: Caching the image: You can use the CachedNetworkImage package which provides a CachedNetworkImage widget that can automatically cache images and show a placeholder until the image is loaded. This can improve the performance of the widget and reduce the amount of data that needs to be loaded over the network. import 'package:cached_network_image/cached_network_image.dart'; class BackgroundImageWithCenteredText extends StatelessWidget { final String imageUrl; final String text; final TextStyle textStyle; BackgroundImageWithCenteredText({ required this.imageUrl, required this.text, required this.textStyle, }); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( image: DecorationImage( image: CachedNetworkImageProvider(imageUrl), fit: BoxFit.cover, ), ), child: Center( child: Text( text, style: textStyle, ), ), ); } } Using the FadeInImage widget: You can use the FadeInImage widget instead of DecorationImage which automatically shows a fade-in animation when the image is loaded. This can make the image appear more smoothly and improve the overall user experience . class BackgroundImageWithCenteredText extends StatelessWidget { final String imageUrl; final String text; final TextStyle textStyle; BackgroundImageWithCenteredText({ required this.imageUrl, required this.text, required this.textStyle, }); @override Widget build(BuildContext context) { return Container( child: Stack( children: [ FadeInImage.memoryNetwork( placeholder: kTransparentImage, image: imageUrl, fit: BoxFit.cover, ), Center( child: Text( text, style: textStyle, ), ), ], ), ); } } Please note that in order to use the CachedNetworkImage package you should have the correct dependencies in your pubspec.yaml file . Using either of these two optimizations will help improve the performance of the widget and make it more user-friendly. Write code documentation or explain code snippets If you need documentation for a specific piece of code or just an explanation of it, all you have to do is ask ChatGPT to write you some documentation and then provide the piece of code for which you want the documentation to be written. Prompt 3 Can you write documentation for the next function? EitherAppFailureOr _getUserData() async { try { final response = await _authApiClient.getUserInfo(); return Right(response); } catch (err) { return Left(Failure.serverError.toAppFailure); } } Answer 3 /// This function makes an API call to get user information, it returns a value of /// type `EitherAppFailureOr` which is a custom type that indicating /// that the function can return either a success value of type AuthResponse or a failure value /// of type AppFailure, which is a custom type indicating what type of failure occurred. EitherAppFailureOr _getUserData() async { try { final response = await _authApiClient.getUserInfo(); return Right(response); } catch (err) { return Left(Failure.serverError.toAppFailure); } } This function, _getUserData makes an API call to get user information. It starts by attempting to make an API call to get user information, this API call is made by calling the _authApiClient.getUserInfo() method which is an asynchronous function. If the API call is successful, the function wraps the response in the Right variant of Either type and returns it, indicating that the function call was successful and the response from the API is included. The response is of type AuthResponse. If the API call fails, an error is thrown, and the catch block is executed. The catch block wraps the Failure.serverError.toAppFailure in a Left variant of Either type and returns it. This indicates that the function call failed and an error occurred. The EitherAppFailureOr is a custom type that indicates that the function can return either a success value of type AuthResponse or a failure value of type AppFailure, which is a custom type indicating what type of failure occurred. This function can be used in the app to check if the user is authenticated and to get information about the authenticated user. It is important to note that either AuthResponse or AppFailure should be defined in the codebase and _authApiClient should be initialized before this function can be used. Detect and fix errors in code ChatGPT can also find and fix errors in provided code. I’ll purposely provide ChatGPT with a piece of code that has a bug hidden within it and let’s see if it can figure it out. Prompt 4 Can you detect errors in the code below and fix them? Future addTwoNumbers(int num1, int num2) async { // some async work Future.delayed(Duration(seconds: 2)); return num1+num2; } Answer 4 There is an error in the code you provided. The Future.delayed method returns a new Future that completes after a delay, but it doesn’t do anything with the returned Future, so it is not awaited and doesn’t affect the behavior of the function. Here is the corrected version: Future addTwoNumbers(int num1, int num2) async { await Future.delayed(Duration(seconds: 2)); return num1+num2; } In this version, await keyword is added before Future.delayed method, this will make the function wait for the delayed Future to complete before proceeding with the rest of the code. Therefore, this will correctly add a delay of 2 seconds before returning the result of adding two numbers. Explaining or generating regular expressions (Regex) If there is one thing all developers agree on, it’s this. Regex can be super tricky. They’re hard to read and hard to understand, usually, you would use some kind of tool for generating or testing them out. Well, it just got a lot easier to deal with them. You can simply copy and paste some regular expressions and ask ChatGPT to explain them to you or you can describe what kind of regex you want and ask it to generate it. Prompt 5 Can you create and explain a regex that matches a valid URL? Answer 5 ^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$ This regular expression is made up of several parts: ^ – Matches the start of the input string. (https?://)? – Matches the optional “http” or “https” protocol at the beginning of the URL. The ? at the end of the group makes the preceding group optional. ([da-z.-]+) – Matches the domain name. The square brackets [] define a character class, which matches any one character that’s listed inside. The da-z inside the class matches any digit or lowercase letter. The . and – characters are also matched. The + at the end of the group means that one or more characters in the group must be present. .([a-z.]{2,6}) – Matches the domain suffix (e.g., “com”, “edu”, “gov”). The . at the start of the group is used to match the dot literally. The {2,6} specifies that the preceding group, which is the [a-z.] should match between 2 and 6 times. ([/w .-]*)* – Matches the path, query string, and/or fragment identifier of the URL. The * at the end of the group means that zero or more characters in the group must be present. /? – Matches the optional trailing slash at the end of the URL. $ – Matches the end of the input string This regex will match URLs with or without HTTP and HTTPS protocol, and it will also match URLs that may have a path, query string and/or fragment identifier. However, it should be noted that this is a complex regex and it may not match all possible URLs, it may not cover all the edge cases, for more complex and thorough URL validation, one should look into using more advanced libraries. Write test cases in Flutter Now now, I know nobody really likes or wants to write tests but they are necessary. They allow us to be sure that certain parts and features of the application are working seamlessly and correctly. Luckily, ChatGPT can also help us out in this area. For example, you can ask it to generate let’s say a unit test and provide the function or a class that you want it to create a test case for or you can describe the class and ask it to generate both class and the unit test for the generated class. Prompt 6 Create a Counter class that holds value and can increment and decrement that value. Write out a unit test for that class in Flutter. Answer 6 Here is an example of a Counter class that holds a value and can increment and decrement that value: class Counter { int _value; Counter({int initialValue = 0}) : _value = initialValue; int get value => _value; void increment() { _value++; } void decrement() { _value--; } } And here is an example of a unit test for the Counter class using the flutter_test package: import 'package:flutter_test/flutter_test.dart'; import 'package:your_project_name/counter.dart'; void main() { test('Counter increments value', () { final counter = Counter(initialValue: 0); counter.increment(); expect(counter.value, 1); }); test('Counter decrements value', () { final counter = Counter(initialValue: 0); counter.decrement(); expect(counter.value, -1); }); test('Counter increments value by specified amount', () { final counter = Counter(initialValue: 0); counter.increment(); counter.increment(); expect(counter.value, 2); }); test('Counter decrements value by specified amount', () { final counter = Counter(initialValue: 0); counter.decrement(); counter.decrement(); expect(counter.value, -2); }); } These tests ensure that the increment() and decrement() methods correctly change the value of the Counter class, and that the value getter correctly returns the current value of the counter. It’s also good to test the edge cases and different inputs as well as negative values. It’s important to test the code to ensure that it behaves as expected and to catch any bugs early on. Ask general questions about how to do something Let’s say you never worked with Riverpod in Flutter and you would like an example of how to implement it as a state management solution . All you have to do is ask ChatGPT to provide you with a starting point. Prompt 7 Can you show me a practical example of how to implement state management using Riverpod into a simple mobile app written in Flutter that has a counter feature? Answer 7 Sure! Here’s an example of a simple Flutter app that uses the Riverpod package to manage state and has a counter feature: First, you’ll need to add the Riverpod package to your pubspec.yaml file: dependencies: flutter: sdk: flutter riverpod: ^0.14.2 Next, create a new file called providers.dart in your project and define a Provider for the counter: import 'package:riverpod/riverpod.dart'; final counterProvider = StateProvider((_) => 0); This Provider is a simple counter that starts at 0 and can be incremented or decremented. In your main.dart file, import providers.dart and wrap the MaterialApp widget in a ProviderScope: import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'providers.dart'; void main() { runApp( ProviderScope( child: MyApp(), ), ); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: MyHomePage(), ); } } In addition, this will make the counterProvider available to all of the widgets in the app. In your MyHomePage you can use the counterProvider to read and update the counter. class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { final counter = context.watch(counterProvider); return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Counter: ${counter.state}'), SizedBox(height: 10), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ FlatButton( onPressed: () => counter.state--, child: Text('-'), ), SizedBox(width: 10), FlatButton( onPressed: () => counter.state++, child: Text('+'), ), ], ), ], ), ), ); } } In this example the watch method is used to access the current state of the counter, the state property of the counter variable is used to get the current value of the counter and the state– and state++ is used to increment or decrement the counter. Now you can run your app and see that when you press the “+” and “-” buttons, the counter value is incremented or decremented. To conclude, this is a very simple example of how to use Riverpod for state management in a Flutter app . Riverpod provides more powerful and flexible state management solutions, but this is a good starting point to understand the basics. Conclusion In conclusion, ChatGPT is a powerful tool that can significantly enhance the way we approach Flutter app development . Its ability to understand and respond to natural language instructions, generate code, and assist in debugging and troubleshooting can save us a significant amount of time and effort. However, it’s important to keep in mind that ChatGPT is not a replacement for developers but rather a productivity booster . As with any machine learning model, the output is only as good as the input . Furthermore, properly prompting ChatGPT is essential to ensure that the model generates high-quality and relevant outputs . In fact, by taking the time to properly train and prompt the model, developers can ensure that they are getting the most out of ChatGPT and creating high-quality apps faster and more efficiently than ever before. Ivan Zvonimir Popovic Ivan is a highly-skilled Flutter developer with a solid background in .NET. He possesses a comprehensive understanding of the development process, from front-end design to back-end functionality, enabling him to deliver seamless and efficient solutions. In his free time, Ivan enjoys staying active in the gym, staying informed about the latest developments in the field of cryptocurrency, and cultivating new ideas for his projects. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 28, 2023 — 14 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 28, 2023 — 14 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Do We Build Tangible Products by Educating Our Clients? - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-do-we-build-tangible-products-by-educating-clients/ Learn how client education, MVPs, and discovery help turn digital product ideas into successful products. How Do We Build Tangible Products by Educating Our Clients? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Do We Build Tangible Products by Educating Our Clients? How Do We Build Tangible Products by Educating Our Clients? September 17, 2021 — 12 min read One of the most sensitive topics for clients are – time and price. As a consequence, there are two frequently asked questions – when a product can be delivered and how much it costs? Before answering these questions, one of the first things that we are doing with our clients is – education. By educating the clients about our business practices, processes, and industry standards, they are very quickly creating the perception of the prerequisites that have to be done before we mutually bring their product to life. On the other hand, they are getting an impression of why building a certain product can sometimes take more time than they expected. In this mutual discussion, by gaining these first insights we are getting closer to the answers. Twitter has it, so does Instagram The clients are mostly coming with an idea of how the final product should work and look like and usually that idea includes the requirements for a large number of functionalities that are sometimes not aligned with the business goals. Having as many functionalities within a certain app is something that sounds very catchy since from the client’s point of view it mirrors the quality and the credibility of the product. But the actual product development works a little dierently, since the beginning of its journey is characterized by the definition of the MVP (minimum viable product), where the slogan less is more is pretty welcome. In other words, the focus is on the minimal number of functionalities that solve significant problems for users and deliver them a certain value . After the MVP is successfully delivered, then comes the extension of the product that builds its credibility even more. What we in Q see as the biggest challenge that many clients are facing is the lack of experience and support when it comes to digitization in every sense of the word – process automatization, product design, product development, launching the product, etc. Having an idea of an amazing product presents a first step in making a tangible product, but the real work comes afterward where most of the clients are struggling with the questions – how to do it and from whom to seek the help? Regarding education , our main goal is to nurture a business and development mindset that will support the correct way of building the product from the start – step by step. By keeping the focus on the final product, very often in their idea, the clients easily skip a lot of important steps that come before the product reaches its final shape . One of the toughest challenges that we have is to familiarize our clients with that Instagram, Facebook, Twitter, and all other related platforms didn’t have the current set of functionalities in their MVP stages . Since the clients always come with the functionalities that present the latest trend that these platforms have. We are always trying to explain that these platforms have continuously improved their apps over time with user feedback and technology advancement . That’s why our clients very often listen to our user research process and its benefits. Through these initial discussions, our clients are getting a glimpse of awareness about our industry, product design , what prerequisites are needed to start with the development, and why an intuitive feature (e.g., threaded comments) can sometimes take so much time to be developed. Amateurs get frustrated with clients, professionals educate them The level of client experience related to product design and development diers from client to client, which determines the eort and time we need to put into their education. The reason for that lies in the fact that some clients are very familiar with product digitization , where others have lots of unknowns and could be labeled as starters. However, the majority of clients fall into the group of starters , and guiding them through the discovery process clears out the ambiguities they come with. Before we even dig deeper into their product idea, our first touch with the clients presents the moment when we are trying to understand their incentive to materialize their product idea . In other words, we’re trying to clarify some of the following areas: What is the story behind the idea? What are the business goals (e.g. increase brand recognition) and how they will be measured? Who is the target audience (e.g. already existing customers that will be part of the loyalty program)? What should be the product focus? What are the pain points the product must resolve? What are the use cases we have to cover? These are just some of the questions for which we are trying to get answers at the very beginning of our journey. One of the most enlightening moments for the clients is the amount of information, answers, and knowledge they receive through these questions. It’s helping them to more thoroughly understand the core and high-level scope of their product and, in the end, to see whether their initial idea is still leading them in the right direction . Gathering the answers to these questions is helping us to consult the clients about the next steps that would be the best fit for them in the process of making the product . Our task is also to educate them on the product design and development phases, what tech stack would be the best fit for their solution, and why, etc. Following that path, we emphasize explaining each phase of the discovery process that we will take. The most important thing that the client understands here is why he must go through a certain phase and what value he is getting from it. Additionally, what is the order of going through these phases? For example: What is user research, why does he need it and what value does it bring to him? Why is it important to define the focus of the product and shape the feature set according to it? Why is it important to sketch the idea via user flows and wireframes? Why does the application tone of voice matter and how to tailor it (brand strategy)? Why does the MVP feature set have to be aligned with the business goals and how to do it? Why would a mobile app be maybe a better solution than a web app? etc. The clients are usually surprised by the number of inputs they have to provide from their side during the product discovery process. Often, there is an initial opinion that it’s a one-sided job. Secondly, what we encountered as the most often point of misunderstanding is – wording . Dierent terms for the same thing can easily lead to crucial issues, so the major thing is to have the same understanding of the terms used. For example, everyone is using the term agile , but at the same time, everyone has their definition of it. User stories, acceptance criteria, high fidelity wireframes , etc. – all these terms are usually not part of our clients’ daily vocabulary. Another important thing to explain is the roles that will participate in the project: Product Strategist , UX/UI Designer , Business Analyst, Solution Architect , etc., because it’s important that the client understands the purpose of each role and what value it brings to the project. After the first week of the workshops, our clients have the biggest “aha” moment as they have witnessed that the product design process requires much more than just having an idea. All these things are helping the client to get closer to the answers he needs to build a valuable product . The truth is that the right spot for one client will be detailed user research , whereas the other client will not need that at all, but brand strategy is something that they haven’t thought about at all, and they need it. That’s why the individual approach is inevitable because each client has its vision and set of ideas. Mutual work presents a key value of building a trusted relationship. The essence of client education In Q, the education presents the first non-oicial deliverable that we provide to our clients before we dig deeper into the product itself. An interesting fact that has been adopted for a long time is that some businesses avoid educating their clients about their industry or, in general, because of the fear that a more educated and discerning client will be less loyal . They were convinced that the clients would be more likely to search elsewhere and choose a competitor. Likewise, some companies even thought that providing the knowledge about their products and services would give the customer too much leverage. But, on the other hand, many businesses are convinced that keeping clients informed about their industry, processes, or service through marketing will be good. What we are trying to bring closer to our clients is the fact that our product discovery process is not tied not just to the business, but to the business’s goals we already mentioned. That’s where we are extracting the biggest value of the product before we even start with its definition. So our main interest here is to determine the client’s business’s highest priority (e.g., increasing the number of consumers or turning existing consumers into loyal consumers, etc.). For example, if the client already has a loyal consumer base, he should try to appeal to those consumers and thus assume that they know something about their product and industry. We are trying to highlight that dierent business goals have a significant impact on the focus of the product and its purpose. Collaboration is the second thing that comes with education, on which we are actively working to get things done on time. At the same time, the amount of clients involvement is overwhelming and motivating for them, but that’s the moment when their expertise comes to the fore. Since, together with our help, they are defining the business goals, success criteria for the product, doing a feature set prioritization – for the MVP and the later stages of the product, etc. That mutual collaboration is the brightest moment for the clients because they gain so much knowledge and experience in such a short period of time . After all, building the product brings value for both parties – consumers and the client itself. The most valuable confirmation that client education is leading us in the right direction is the genuine feedback we receive from them. Following this path of investing in our client education , the benefits that the clients are able to reap out of it are: Any discomfort that might be present at the beginning disappears very quickly. Mostly the clients know pretty high-level things about our industry, and that’s why they’re coming to us in the first place. And on the o-chance that they are familiar with it, they usually don’t know much about our process and business practices. So by giving them the information and educating them on these topics, it clears out any concerns they may have. Likewise, it allows them to feel comfortable asking the questions, which is crucial to client communication and a great working relationship. Clients are getting real-time proof of our qualifications. Through client education, we strive to position ourselves as professionals. In that way, we allow them to see that we know what we’re talking about and have experience in our field. Likewise, our clients feel more comfortable taking our advice and trusting our judgment when they see us as the experts. We build trust. Clients want to feel that they are in good hands , especially when they invest time and money in working with us. By explaining our decision-making, reasoning, business practices, and processes, we show that we are experienced and knowledgeable and confirm that we know what we are talking about. Open communication and education build trust and thus create strong client-agency relationships. How do the clients feel when learning something new? The lack of knowledge is the most fertile ground for discomfort and distrust. The ins and outs of our business, the terminology we use, and the reason behind each of our processes; all of that becomes second nature to us as business owners since we’re always consumed and saturated in the industry. But from the client’s perspective, it has a completely dierent point of view since it’s really easy to forget that the processes in our industry are most likely foreign and unfamiliar to them. As a result, all these things can lead to disaection on both sides and prove harmful to building solid client relationships. To prevent these situations from happening, the main emphasis is on the individual approach and full dedication to each client since we strive to establish a strong partnership with our clients in each step of our processes. An interesting concept called Kort’s learning spiral model presents the necessary pattern of emotions that the learners are experiencing when they learn something new. The image below summarizes the path: Kort’s Learning Spiral Model Looking from the client’s perspective, they start in Stage 1, where they feel great about the idea of learning a new concept . But when they’re confronted with confusing or challenging information, they head into Stage 2, where they start feeling confused and anxious. The new information is challenging and hard to understand. In the meantime, as they start to fix up their old, outdated knowledge, they’ll enter into a state of frustration. They’ll be trying out new answers to diicult questions and realizing some of the things they used to think were true are, in fact, untrue. At that moment, they’re not feeling positive emotions at all. Nonetheless, it’s a necessary stage in cognitive development because learning new things sometimes has to challenge their old ways of thinking. The last stage they enter is Stage 4. In this stage, they feel determination and hopefulness because they feel like they finally understand a new concept. As we can see, learning usually leads to many dierent emotions. Sometimes negative emotions like confusion, annoyance, and frustration are necessary – they need to go through these states to come out the other side having learned something important. In the end, by educating our clients, we also educate ourselves, and most importantly, we are all together in each step of that process. As Zig Ziglar once said: “You can have everything in life you want if you will just help enough other people get what they want.” Etjen Suljic Etjen is a Senior Business Analyst at Q agency. He combines his business experience and strong analytical skills in helping the clients to materialize their ideas into tangible products. Besides his interests in technology, he’s in the process of education for the transactional analysis psychotherapist. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 17, 2021 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 17, 2021 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How I Became Both QA and BA - At the Same Time - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-i-connected-qa-and-ba-into-one-person/ Learn how combining QA and BA roles into one improves collaboration, streamlines workflows, and helps deliver higher-quality products more efficiently. How I Became Both QA and BA - At the Same Time | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How I Became Both QA and BA – At the Same Time How I Became Both QA and BA – At the Same Time February 7, 2026 — 6 min read Once upon a time, there was a 10-year-old kid, and her name was Lucija. She grew up in a small town in the south of Croatia. One day a school teacher asked every child in the classroom, “What do you want to be when you grow up?”. The kids said things like, “an astronaut,” “a doctor,” etc. But the girl dreamed about being a professional athlete and winning gold medals. I am sure you are already guessing. That girl is me. Now a Quality Assurance and Business analyst, so much of a doctor… “I want to be the best sports player ever!“ Now, 20 years later, my mom showed me that old paper where I wrote my wish. Firstly, I was surprised how she is still keeping the paper, and secondly, how my priorities changed over the years. I remember that no one of those children answered, “I want to work in an IT company and be an IT expert!” People are occasionally asking me, “What do you do?” I am always trying to make a joke saying, “I am a messenger between the client and developers, and I am finding a needle in the haystack.” While working with brilliant and talented people for the last year and the several years before that, I’ve learned that my dream is to be an IT professional. I surely didn’t make a mistake switching from sport to IT. I was working as a Travel Agent and Finance Expert. My decision to be a Quality Assurance and Business Analyst came unexpectedly. It was a situation that opened to me a sea of new possibilities and showed me the proper path in my career. And here I am now, working as a Business Analyst and S(Software)Quality Assurance in the company with the best energy and the most friendly atmosphere that I’ve experienced. How Does the QA and BA Career Path Come Together? In the past years, both in the former company and in Q agency, our IT department employed more business analyst positions. Some came from the internal companies, some came from the external companies … and from which department did most people come? The S(Software) Quality Assurance. My transition into the Business Analyst and Quality Assurance position started years before actually arriving here. The story has begun with specializing for analysts’ approach, at first as a financial analyst, but then evolving to the Business Analyst position. From experience (both successes and failures), I learned the critical importance of several things: Know the values of your company Do more Be kind Move Fast Search for opportunities to train on testing tools Mentoring is important Be Agile Understand requirements Quality Assurance vs. Business Analyst The goal of Quality Assurance is to ensure that testable requirements are successfully implemented within the developed system. Business Analyst uses its problem-solving skills to define the correct, testable requirements for the business needs. Both are striving to solve real problems. Some activities that overlap Business Analyst with Quality Assurance are crucial, and these are some of the points how Business Analyst can learn from a Quality Assurance person and opposite: Model and document: A Quality Assurance person is thinking out of the box to cover all user stories so that none of the edge cases are missed in the application. Business Analyst writes user stories that are shared with all stakeholders. Translate Business Need: Quality Assurance person is responsible for testing the overall system and a key person in STLC. He can predict that changing one module can aect some other modules. Business Analyst is working in the same direction more professionally. Requirement analysis: A Business Analyst person is also responsible for all requirement analysis, a Quality Assurance person is also responsible for requirement analysis to some extent. Testing and validation: In the end, Quality Assurance verifies all requirements of the application. And a Business Analyst verifies all requirements from a user perspective. Therefore, connecting the work of Quality Assurance and Business Analysts seems reasonable. From my perspective, there are few benefits from having a Quality Assurance/BA working almost the same job in your team, and those are Communication and Happy developers 🙂 Even though there are plenty of similarities, you can still find some dierences. Without a doubt, one of the significant dierences is dependence on others . To clarify, when I work as a Quality Assurance, and if I document, test well, pay attention to details, and put in the extra time when necessary, success follows. On the contrary, as a Business Analyst, you depend on the team. When you have problems and the project is behind, it doesn’t matter how many use cases you have written or updated or how many meetings you have been on. We would rise or fall together, and this is what I like, that we are all ONE TEAM . As a former water polo player, I learned how important it is to be a team player. When your teammates don’t have a good day, there’s always someone out there who will give more and help the team. Thus, I have learned how to keep my head above the water in any situation. The best thing if you are working as a Quality Assurance and BA is that you understand both sides of the job. Meaning, if I want to criticize the Quality Assurance on my team, I stop and think instead about the problems I could face in his situation. It works fine, putting yourself in the other’s shoes. I understand what they need to do with Quality Assurance experience to reach the definition of done, and I can be honestly thankful. Always say “Thank you.” Thanks to my Business Analyst and Quality Assurance background, the best thing I have learned can be summoned in this sentence: “I can admit that I don’t get it. I don’t know how to do my job perfectly. So I ask.” Last but not least – Remember, your end goals are the same. A successful project is when the requirements are implemented successfully in the software. At that moment, the team won the gold medal! I won a gold medal! Lucija Drobac Lucija is a Quality Assurance Team Lead that raises software quality with her skills and various testing techniques. She holds her team like a drop of water in the palm of her hand. When Lucija is not testing and supporting her team, she runs through the woods, learns how to play guitar or sits back and reads a good book. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 7, 2026 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 7, 2026 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How is Q handling the pandemic? - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-is-q-handling-the-pandemic/ Discover how Q navigated the COVID-19 pandemic with a global footprint, diverse portfolio, and resilient business strategy. How is Q handling the pandemic? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How is Q handling the pandemic? How is Q handling the pandemic? April 22, 2020 — 7 min read COVID-19 has already started a global recession, but so far, Q hasn’t been aected. This article is about why Q is holding up and what are our tricks to fight the recession. According to Bloomberg, “Coronavirus Could Cost the Global Economy $2.7 Trillion”, while Financial Times says, “the economic downturn will be sharpest since the great depression.” Q agency closed its oice as soon as the virus started spreading in Croatia, and only 32 cases were confirmed. Our reaction was rapid and fast but structured and planned. We knew a lockdown was imminent to Croatia as well, considering trends and ways other countries were fighting the coronavirus around the globe. We wanted to make sure we are appropriately prepared, so we made a plan beforehand, and when the time arrived, we executed it in only one day. But closing the oice wasn’t the biggest obstacle. Keeping a strong team spirit, making sure both employees and clients still have faith in us, and keeping our business going are the challenges we were facing. One month in, and we can say that for now, we are ahead of this crisis, fighting it fiercely and successfully! It looks like we have a formula for a business vaccine that keeps us being immune. Here are the ten ingredients to our recipe on how to keep your company’s head above the water. 1. Global Footprint We are working in 20 countries worldwide, with clients spreading from Alaska to New Zealand. Our biggest market is the DACH region (Germany — Switzerland — Austria), where the pandemic is slowly getting under control and where the economic recovery is excepted sooner. As a result, we are not relying on the economy of one country, which would make us highly dependent, but rather distributing our risk on dierent markets globally. Now more than ever, we’re going global. 2. Diverse Portfolio Our Chief Business Oicer Vedran, on a factory tour at 3AC — a leading manufacturer of materials used in the construction of airplanes, the world’s biggest wind turbines, and the fastest trains Throughout the years, we never gravitated toward a specific industry. Some might think of it as a bad strategy, but in this scenario, it turned out to be an excellent risk dispersion. With some sectors being hit more than others, incline towards an aected industry aects your business as well. Software development and design have an element of freedom to choose what field of work they are oriented towards, and luckily we chose none. Whether it is banking or gaming industry, we are choosing challenging and exciting projects for our workers and us as a company. This decision gave us a safe and stable income regardless of fluctuations some industries are currently struggling with. 3. Big Biotech Clients Many pharma and healthcare industries are booming right now, and we happen to work closely with some of the most prominent players in this segment. We’ve got seven clients in biotech spreading across Europe and the US. For them, we’ve created a significant amount of advanced software solutions, which are already thriving on the market and supporting their internal processes. We’ve been collaborating with each of our pharma and medical clients from the earliest project phases, to execute their ideas and concepts in the most technologically advanced standards. 4. Financially Independent Some of the big clients Q has or is working with Many software development and design agencies get most of their income from one or two big clients, which makes them vulnerable and heavily dependent. We, on the other hand, run more than 40 projects simultaneously. All our clients are between 1–10% max. of our revenue. In case this crisis hits our biggest clients, we are still stable enough to survive with minor to mid consequences. 5. Blue Chip Portfolio We are working on a couple of projects with The Times, the oldest newspaper in the world Most of our clients are sound and stable companies. We’ve got only a couple of startup clients, while over a dozen of our clients are global industry leaders, ranked in Global Top 5 in their segment of work. To establish communication directly with big clients without the middlemen takes a lot of work and lots of ups and downs. But it’s worth it. The crisis hits many agencies and mediators, but strong and big companies are the ones who tend to survive in the worst times. 6. Long-Term Clients We have a lot of long-term projects that are like living organisms, in a constant need for upgrades, adding new features, and maintenance. A lot of our old clients that we worked with before come back with new proposals. They value loyalty and hard work, which is why we never give less than 100%. “A happy client makes the best marketing campaign,” and our regular client feedback surveys show that our clients count on us strategically in the long run. 7. Remote Work Pros ® We are the remote work pros! That was our way of life since the very first day our company was established, allowing our people to work from home whenever they wanted. Now six years later, one of the first measures taken by every government in the pandemic was: Work from home. We said “no problem” and just had to re-arranged a couple of things. Our projects at Q haven’t suered an inch since. 8. Sales, Sales, Sales! When the COVID-19 hit, we didn’t cut costs by laying anyone o but rather hired new Salespeople instead. We immediately re-organized and created new strategies, encouraging out-of-the-box thinking. The market is dierent now, so we had to adapt too. We put focus on the industries that aren’t aected by the crisis, such as gaming, online learning, and delivery services. Never in the history of our company we’ve had so many dierent sales eorts and initiatives. The sales stats are transparently shared with the entire organization, so people feel informed and included. 9. 100% Transparency Dalibor, Filip, and Vedran, the three founders of Q, openly communicating everything to anyone, both good and bad news We think that the “100% transparency” is the key during these times. We’re taking our task very seriously to keep everyone at Q informed of literally everything necessary. We are completely honest in our communication. We introduced the “Friday Management Video,” a 15–20-minute wrap up of the entire week, e.i. Important news, project status, new clients, sales stats, problems in communication, etc. We added the “Round Table,” where the management answers the open questions from everybody. The results are amazing, and the team spirit of the company has never been more energetic. 10. Strong “Esprit de Corps” The results of our anonymous internal survey, conducted after the first week of full remote work We all miss social contact with our friends and colleagues. No matter who you live with, it is natural to feel down and isolated. Which brings us to our next step — a whole bunch of our internal online social activities. Despite our entire oice working remotely, the Esprit de Corps at Q has never been better: We introduced 12 new online initiatives, such as “Q Talks” Google Meet events hosted by Q people, team games such as “Quarantine Quiz,” Slack channel “CookBook” for cooking recipes, the “Online Yoga” and workout videos, and “Virtual Couch Sessions” for stress management with our psychologists, etc. Though distant, we are still together. Conclusion We are growing stronger day by day, with zero restrictions or cut-os (we are even employing!). Even with all this being said, no one knew this crisis would happen, and no one knows how it will unfold. So regardless of our current good situation, we need to sleep with one eye open. All we can do is do our best, keep our head straight, maintain focus, and continue to invest in our employee’s happiness and safety. We need to pay attention to our surroundings and be agile in making decisions and plans. The only way to overcome this pandemic is to be flexible and adapt to every situation we find ourselves in. And, hope for the best. Filip Ljubic Filip is a passionate leader with a strong international background with over 15 years of executive experience. In his free time, he loves being in nature, hiking, and enjoying family time with his 3 kids. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 22, 2020 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 22, 2020 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Risk Analysis Supports BAs in Managing Projects - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-risk-analysis-supports-bas-in-managing-project-risks/ Learn how Business Analysts identify, assess, and manage project risks to improve planning, reduce uncertainty, and ensure project success. How Risk Analysis Supports BAs in Managing Projects | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Risk Analysis Supports BAs in Managing Projects How Risk Analysis Supports BAs in Managing Projects September 21, 2025 — 4 min read Risk Analysis and management is one of the key services our teams provide to ensure projects run smoothly and deliver real value . This is a collaborative process where Business Analysts work hand-in-hand with Product Managers, Solution Architects, and Designers to identify potential risks early, assess their impact, and develop strategies to address them. By combining different perspectives, be it business, technical, and user-focused , we create a more complete picture of where challenges might come up and how to mitigate them before they turn into real problems. While BAs are not the sole owners, they contribute significantly to the following activities: Requirements risk assessment Feasibility and complexity analysis Development of mitigation strategies Change impact and Dependency analysis Stakeholder risk analysis This approach that includes collaboration among teams ensures effective identification, assessment, and management of risks, aligning with project goals and stakeholder expectations. So what do BAs do when it comes to risk analysis? Their main goal is to evaluate the risks associated with specific requirements to ensure alignment with business needs goals and KPIs. Often, significant risks emerge during the first week of the discovery phase. BAs promptly list and clarify these risks with stakeholders to prevent potential issues later on in the process. Early detection and resolution of risks are crucial to keeping the team and product on the right track, avoiding misdirection and ensuring project success. The responsibility of BAs here is to collaborate with Solution Architects to assess the feasibility and complexity of gathered requirements. By doing that, they determine their suitability for the MVP and overall project . BAs, as being the most familiar with the business background and product functionalities , also participate in the estimation process of the defined feature set within the product backlog, ensuring that requirements are realistic and aligned with project goals. This collaboration helps provide accurate estimations and informed decisions, supporting successful project planning and execution. BAs’ duty here is to collaborate with Product Managers, Solution Architects and Project Managers and take part in defining strategies to mitigate identified risks . For example, a BA might identify a potential delay in a critical integration point and work with the Solution Architect to propose alternative technical solutions (and adjust the backlog accordingly) while the Product Manager adjusts the timeline and scope. This collaborative effort results in reducing the potential impact and likelihood of risks , and ensures project stability and alignment with objectives. Crucial Role of BAs in Risk Analysis Things to keep in mind. There’s a difference between: Delivery risk , related to resources, costs, and features. Market risk , related to business and customers. The role of BA is to identify these risks and mitigate them through various techniques. In short, the goal is to make everything that is unknown tangible, measurable and evaluable. Business Analysts play a key role in evaluating the impact of proposed changes on existing systems, processes and stakeholders. They also participate in identifying and analysing dependencies between requirements and systems to manage risks related to interdependencies. What this means is that a BA has the task to assess how a new feature could affect existing workflows and communicate these changes to stakeholders, while also mapping out how this feature depends on other system components. This involvement ensures that potential impacts and dependencies are effectively managed, supporting smooth project execution and alignment with strategic goals. Another thing that BAs often do is collaborating with Product Managers to analyse stakeholder-related risks , ensuring their needs and expectations are managed effectively throughout the project. In practice, a BA might identify unrealistic expectations from a key stakeholder regarding a feature’s delivery timeline and facilitate a meeting to realign expectations. Continuous monitoring of stakeholder satisfaction and engagement is crucial to identify and manage emerging risks, maintaining positive relationships and project alignment. Risk Analysis & Management Deliverables List of risks associated with specific requirements to ensure alignment with business needs, goals, and KPIs. Assessment of the feasibility and complexity of gathered requirements to determine their suitability for the MVP and overall project. Explained workarounds outlining how identified risks will be managed and mitigated throughout the project. Analysis of the impact of proposed changes , including effects on existing workflows, systems, and stakeholder interests. Final Thoughts Effective risk analysis and management isn’t just about preventing problems. it’s about creating the conditions for smarter decisions, stronger solutions, and long-term project success. By addressing risks early and collaboratively, businesses can move forward with confidence. Are you’re looking for a partner to help you identify, assess, and manage risks in your next project? Get in touch with us. We’d be more than glad to support you. Ante Ukas Ante is a digital marketing professional working as a Content Specialist at Q. His main areas of work are copywriting, social media, and SEO/AIO. He speaks 4 languages fluently and is currently learning French and Dutch. Ante enjoys traveling and spending weekends with friends, often exploring new places and music scenes. And he'll never say 'no' to going for a bike ride around the city or a hike to the nearest mountain. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 21, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 21, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Become a 3X Developer - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-become-a-3x-developer/ Learn how AI tools, engineering experience, and spec-first workflows help developers become 3X contributors without replacing teams. How to Become a 3X Developer | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Become a 3X Developer How to Become a 3X Developer June 29, 2026 — 10 min read For years, software delivery scaled mostly by adding specialists. Need mobile? Add a mobile developer. Need backend? Add a backend developer.Need admin features? Add someone who knows the admin stack.Need Python? Add a Python developer.Need AI behavior in the product? Add another layer of expertise. That model still makes sense for many projects. But it also has a cost: more handovers, more waiting, more coordination, and more context loss. AI tools and spec-first development are changing that equation. They make it possible for an experienced developer to move across multiple stacks faster, without losing control of the work. That is what happened in my case. With almost 20 years of development experience, AI tools, and a spec-first workflow, I was able to cover mobile, web, Python, Symfony, and React Admin work in parallel. Not because AI replaced the need for engineering experience. Because AI made that experience easier to apply across stacks. For me, that is what becoming a 3X developer means. Not just writing more code. Not just prompting better.Not just using the newest model. It means expanding the surface area one developer can responsibly own. Speed Without Control Is Not Productivity The important word here is responsibly. Moving across stacks is not valuable if it creates chaos, breaks architecture, or leaves the team with code nobody understands. Speed without control is not productivity. It is technical debt with better marketing. AI can generate code quickly. It can explain unfamiliar syntax, suggest patterns, prepare boilerplate, compare approaches, and help navigate unknown parts of the system. But AI does not own the consequences of the implementation. The developer does. That is where experience still matters. A developer needs to understand architecture, contracts, permissions, data flow, debugging, product impact, and delivery risk. Without that, AI can produce something that looks correct but breaks the system in places that are not immediately visible. The real multiplier is not the tool alone. It is the combination of tool, process, and engineering judgment. Spec-First Skills Create the Missing Delivery Structure When I took over the project in support mode, the product was already built, but the original delivery structure was no longer around every decision. That is a very common situation in real projects. The core product exists. The architecture exists.The business context exists.But the day-to-day work becomes more fragmented. A bug appears in mobile. A change is needed in the web app.The backend contract needs to be checked.The admin panel needs an adjustment.The AI behavior needs to be corrected.The client needs a technical explanation. And suddenly one developer has to connect the dots across several stacks. I was not starting from an empty project, and I was not working in a perfectly staffed greenfield setup either. I was working in the reality many agencies know well: an existing product, real client needs, production pressure, and a lot of context spread across code, tickets, documentation, previous decisions, and people’s memory. This is where spec-first skills became important. They did not replace the roles that had contributed to the project before. They created a structured path through the type of thinking those roles usually bring into delivery. The SPEC skill supports the PM and BA part of the work. It forces the feature or change request to be described before implementation starts: what problem we are solving, who the user is, what is in scope, what is out of scope, what edge cases matter, and what the expected behavior should be. The DESIGN skill supports the tech lead and solution architect part of the work. It connects the requested change to the existing system: affected modules, contracts, data flow, permissions, architecture boundaries, dependencies, and technical risks. The UIX skill supports the design and UX part of the work. When Figma context is available, it helps translate the intended user experience into implementation context, instead of leaving the developer to guess spacing, layout, states, or behavior from screenshots and comments. The TASKS skill supports delivery and implementation planning. It breaks the work into smaller, executable steps, with clearer dependencies, verification points, and implementation order. The IMPLEMENTATION step supports development itself. AI can now work from a stronger context : specification, design decisions, UIX context, tasks, project rules, and existing contracts. The REVIEW step supports the senior developer part of the work. It checks whether the implementation follows the spec, respects the design, avoids unnecessary changes, and stays aligned with the project rules. Together with tests, linters, CI checks, and tools like SonarQube, it creates another quality gate before the work is accepted. This does not mean that spec-first replaces PMs, BAs, designers, tech leads, or senior developers. It means that their way of thinking becomes more visible in the process. When those roles are available, spec-first helps align everyone faster. When the project moves into support mode and fewer roles are involved in day-to-day decisions, spec-first gives an experienced developer a structured way to move through the same decision points without relying only on memory, instinct, or scattered context. That is what made cross-stack ownership possible in my case. AI Makes Experience Portable Before AI tools became part of my daily workflow, switching between stacks was expensive. Every stack has its own conventions, tooling, lifecycle, and hidden traps. Mobile has its own flow. Frontend has its own state and UI concerns.Symfony has its own architecture and backend conventions.Python has its own ecosystem.React Admin has its own patterns.AI behavior adds another layer of complexity with prompts, memory, retrieval, streaming, model behavior, and user expectations. AI lowers the cost of entering those areas, but it does not remove the need to understand what is happening. The reason it works is not that every stack suddenly becomes simple. The reason it works is that an experienced developer starts recognizing the same engineering patterns across different technologies: Routing Validation Services State Contracts Permissions Data models Error handling Testing Deployment risk User impact The syntax changes. The engineering logic does not. AI helps bridge the syntax and framework gap faster. It helps explain unfamiliar code, generate boilerplate, suggest implementation options, and compare patterns. But the developer still decides what makes sense. That is why I say AI made experience portable. It allowed me to apply the same engineering judgment across different stacks without treating every stack as a completely separate world. The Strongest Model Is Not Always the Answer One thing I learned in practice is that productivity does not come only from using the strongest possible model. Most of the time, I work in auto mode in Cursor . I often do not even focus on which exact model is being called underneath. For daily development, what matters more is not obsessing over the model, but giving the tool the right context. A strong model with weak context will still make bad assumptions. A normal model with a clear spec, clear tasks, project rules, and existing contracts can be extremely effective. That was an important mindset shift. The model matters. But the workflow matters more. Spec-first turns context into something concrete. Instead of relying on a vague prompt or a long chat history, the work is grounded in artifacts: specification, design, UIX context, task breakdown, implementation notes, and review. That gives AI a better starting point. And it gives the developer a better way to verify the result. The Multiplier Is the Workflow The 3X effect does not come only from one developer using AI tools well. It comes from the workflow around the developer. In an agency environment, delivery is rarely the result of one isolated person. A good feature usually passes through several layers of thinking before it becomes production code. PMs and BAs help clarify the business goal Tech leads define the technical boundaries Design defines the expected behavior and user experience Spec-first turns decisions into structured implementation context AI helps accelerate execution Senior review protects quality Tools like tests, linters, CI checks, and SonarQube help catch problems early That is where the real multiplier appears. An experienced developer can use this setup to move across stacks faster and take ownership of a much wider part of the system. But the same workflow also raises the level of the whole team. A junior developer gets clearer tasks and less guesswork. A mid-level developer gets more independence.A senior developer gets more leverage.A tech lead gets more consistency across implementation.The team gets a shared source of truth instead of scattered assumptions. This does not flatten seniority. It makes seniority more scalable. The senior developer is still needed for judgment, architecture, review, and risk detection. But that judgment no longer lives only in someone’s head or in a meeting that everyone forgets two days later. With spec-first, part of that judgment becomes visible in the process. The point is not that everyone becomes the same level because they use AI. The point is that everyone can operate closer to their best level because the workflow removes unnecessary friction. What a 3X Developer Actually Does A 3X developer is not just someone who codes faster. That is too narrow. A 3X developer owns more of the delivery chain. They: understand the requirement challenge unclear scope connect backend and frontend contracts. identify risk use AI to move through implementation faster review generated code critically protect architecture document decisions communicate technical trade-offs clearly This is where seniority becomes visible. Anyone can ask AI to generate a component. But not everyone can see that the component ignores an existing permission rule, duplicates business logic, breaks an API contract, or solves the wrong problem elegantly. AI can write code. The developer still needs to know what should exist. That is the real difference. The more AI accelerates implementation, the more important judgment becomes. How to Build This Skill If I had to summarize how to become a 3X developer, I would not start with prompt engineering. I would start with fundamentals. Understand how software systems work. Learn architecture, APIs, databases, permissions, debugging, deployment, security, and product thinking. AI is much more useful when you already have a strong internal map of how systems behave. Then learn how to work with AI as a collaborator, not as a magic machine. Do not just ask it to build. Ask it to Analyze Compare Plan Review Challenge assumptions. Explain trade-offs And finally, use spec-first development to keep everything grounded . Before implementation, clarify the goal. Before changing files, understand the existing system.Before accepting AI output, review it against the spec.Before merging, check quality gates.Before moving on, document what changed and why. The goal is not to generate more code. The goal is to deliver more value with less waste. Conclusion Becoming a 3X developer is not about hype. It is about leverage. In my case, that leverage came from combining almost 20 years of engineering experience with AI tools and a spec-first workflow. That combination changed what I was able to own on a real project. It allowed me to work across mobile, web, Python, Symfony, and React Admin in parallel, in support mode, under real delivery pressure, without treating every area as someone else’s problem. That is the real shift. Not that one developer should always replace a team. But that one experienced developer, supported by AI tools and a structured spec-first workflow, can responsibly own a much wider surface area than before. And when the same workflow is applied at team level, the effect becomes even stronger. AI did not replace the need for engineering experience. It made that experience easier to apply across stacks. Spec-first made it safer to scale through the delivery process. That is what 3X development looks like in practice. Anka Bajurin Stiskalov Engineering Lead at Q. Passionate about developing with a focus on making life easier for fellow developers. Always looking for ways to streamline workflows and boost productivity — let's build smarter together! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 29, 2026 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 29, 2026 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Deal With Difficult Clients in Software Development (Or Anywhere) - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-deal-with-difficult-clients-in-software-development/ Read about the most effective strategies and practices on how to deal with difficult clients, when finding the common language seems like mission impossible. How to Deal With Difficult Clients in Software Development (Or Anywhere) | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Deal With Difficult Clients in Software Development (Or Anywhere) How to Deal With Difficult Clients in Software Development (Or Anywhere) February 14, 2025 — 9 min read We’ll be going through the most effective strategies and practices on how to deal with difficult clients, whether the client keeps changing project requirements, sets unattainable demands or finding the common language seems like mission impossible. Some of the steps mentioned we often do by default just by using common sense, but it’s always good to have a place where you can read about the useful ways to avoid losing your cool with your revenue source. Also, we’ll show you what our experts in sales have experienced and how they solve this not-so-rare issue between the service provider and the client. 1) Keep It Together. Take a Break So, how to deal with difficult clients? By keeping it calm and cool , no matter what. If the client needs to express their dissatisfaction, even if they crossed the line and said something in a bad taste, you should stay composed and not show irritation with the other side’s behaviour. If a minor disagreement inevitably escalates, the best thing for both parties is to agree to take a break to avoid having an even more heated argument — time is your best friend here. Also, you’re the one who offers your services (often on behalf of a company) and your behaviour determines in which way the conversation with the client will go. And that’s why the first and foremost rule is to try not to raise your voice at all, or resist the temptation to do the same if the other side had already raised theirs. If you show you’re in control, you also show professionalism. Staying calm isn’t always easy, but it can lead to better mutual understanding and ultimately, a better product, service, or solution for both parties. 2) Listen Actively. Act Accordingly Most conflicts with clients arise from the feeling that their demands are not being respected in one way or another. This requires you listening attentively and actively , maintaining eye contact, and showing through your gestures that you understand the client’s concerns. Furthermore, based on your observations after hearing from your client, the best way to approach the matter is to ask them what they think would be most helpful to them at the moment or what the best way to help them solve your current situation is in their opinion. If you consider your client’s wishes and clarify the main pain points together, you open the way to a much easier and more painless problem solving. It’s human nature to want to be heard, so this approach of active listening and showing respect often leads to faster de-escalation of unresolved issues with your client. The best tactic is to show understanding and empathy for the other side, both in tone and rhetoric, as well as body language. 3) Identify the Pain Point When having to deal with difficult clients, it’s essential to have open communication and mention specific information regarding the reasons why things went south. Why? Because this information is crucial for you to have a broader picture and a better understanding of the overall situation. Is the problem ‘only’ in miscommunication between members of the team, expectations that the client had but were not met, or is the problem in the end result or deliverables? Furthermore, a methodical approach that includes summarising the problem in your own words and pinpointing the exact reason for the discontent will make the process of handling the situation easier. This approach also demonstrates your investment in the current issue, and shows you want to resolve the problem as quickly and effectively as possible. Once both parties fully understand where the main pain points lie, the result is a clearer communication and a solution that can suit both sides. 4) Set Boundaries It’s not uncommon for a client to simply set unattainable demands, and if that leads to further escalation and even involves bad words, the process is clear — there’s no point in continuing the conversation until both sides have cooled down. Certain standards in professional communication must be respected — that’s why the key is to set your boundaries that’ll help your relationship with the client flow smoother. When boundaries are set early on, especially those related to time limitations or budget restrictions, underlining and highlighting respectful communication is imperative. In other words, the quality of your service or project delivery must not suffer because of changes that the client requests abruptly. This approach of knowing who is accountable for what is mature and professional, and gives the impression of you understanding the core of the problem, but also grants you the authority that’s more often than not required in these situations. 5) Suggest Solutions What you can do is offer suggestions with solutions for your clients that are aligned with their specific requirements — all that based on figuring out the core of the project-related challenges. By offering multiple options to resolve the issue, you’re showing the effort and willingness to come to a solution. And it also shows that you’re not just offering something to please them in the short-term. Moreover, another vital detail to remember is to present each of the possible suggestions you’ll offer with its pros and cons and the potential deadlines that each of them has. It goes without saying how important it is to be completely transparent about what’s realistic and achievable, without making promises that could lead to new ‘glitches’ in your future communication. If your proposals do not please the client or are ultimately not doable, what you can do then is give it another try. When dealing with difficult clients, it’s one more suggestion that might finally get closer to the client’s demands. What’s crucial is that you determine the next steps, who is accountable for what exactly, and set up deadlines so that everyone involved can be on the same page. A systematic and structured plan like this changes direction from conflicted or, at the very least tense, to you showing proactivity and strong focus on problem solving. 6) Learn, Adapt & Share For future potential disagreements with the client, it’s essential to write down the main insights based on your experience, and the ways and methods that helped you come to the final solution. All this information you’ve learned will be useful as a lesson for future situations, which, let’s be real, may happen from time to time. Another crucial thing: share it all with your team . The fact that you may have resolved the conflict by yourself does not mean that your takeaways must remain only with you. Share your remarks with your team so that everyone can benefit from (your)  previous experiences. 7) Ask For Feedback And perhaps the most important thing we leave for last. Your conflict resolution experience is invaluable and serves as a prime example of your professional growth and development. And that is why, after you have successfully resolved your situation with the client, you should ask for client feedback . Why? Because this way you show, once again, respect and understanding towards them. Needless to say, it will definitely help you continue improving your approach to solving similar problems and solve them more efficiently in the future. 8) How our Sales Deal With Difficult Clients In the 10+ years of Q’s existence, we’ve had several situations where we came across clients that were not so easy to handle. Whether they valued higher management’s opinion and didn’t recognise sales as a point of contact or had unrealistic expectations on the start date and project delivery or didn’t even know how agencies or software development works in general. There were also situations where the client didn’t see the benefit of working closely with the team and communicating requirements for their product. Of course, some didn’t even see the benefit of creating a roadmap and preparing for the road ahead. And one of the biggest problems we’ve encountered was clients being very slow to respond or even ghosting our sales when you ask them about feedback, critical decisions, or when you contact them regarding payment. Let’s see how our sales team approached this issue. Given the client’s preference for management input rather than that of our sales team, they proactively involved relevant decision-makers early on to reinforce the project’s strategic value. Sales scheduled structured communication routines — like short, weekly alignment calls — to maintain momentum, clarify requirements, and remind the client of outstanding actions, including payment deadlines. Additionally they also: talked to the client with concise, jargon-free explanations of software workflows (bridging knowledge gaps and preventing delays) used clear deadlines in the first talks to address slow response times highlighted potential risks to the client’s ROI elevated issues to key stakeholders when needed Conclusion It’s important to step into the role of an ‘educator’ of sorts for your client and let them know what your expectations and requirements are too. This way, you’ll stay ahead of potential issues in your collaboration right from the start. It goes without saying, sharing this information needs to be carried out in a respectful way. Also, it’s vital to show how the business processes function in your company and the client ought to have it bright and clear right from the very beginning. This way, the amount of ambiguities should be brought to the minimum by following the steps mentioned in this blog article: remaining calm listening actively spotting the project’s scope creep early on navigating unrealistic demands with skill by establishing boundaries learning from your previous experiences All this can be highly beneficial in finding a successful way to solve the problem with your client. If you’d like to reach out to us and see how easily business can flow with us, contact us and we’ll set up a meeting! ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 14, 2025 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 14, 2025 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # CASE STUDY: The mobile app that empowers people during the pandemic - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-empower-people-during-the-pandemic/ Discover how Q built Jenz, a mobile social network designed to keep employees connected, informed, and engaged during the COVID-19 remote-work shift. CASE STUDY: The mobile app that empowers people during the pandemic | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > CASE STUDY: The mobile app that empowers people during the pandemic CASE STUDY: The mobile app that empowers people during the pandemic May 6, 2020 — 9 min read Meet “Jenz” — a brand new app by Q, that builds a more connected, engaged, and productive workforce, even during the home-oice mode. 85% of people who work remotely want to feel more connected with their colleagues” — Slack With the entire world going into the COVID-19 paralysis, building a strong team spirit has become a hot topic for every employer, crucial in the upcoming months and maybe even years. Now, more than ever, it will be increasingly important to make sure your people are well informed, connected, motivated, and engaged, otherwise the productivity of the company will fail. Our empty oices with the entire workforce on Full-Remote since the outbreak One month in, and we can say that for now, we are ahead of this crisis, fighting it fiercely and successfully! It looks like we have a formula for a business vaccine that keeps us immune. Partly that’s also because of the new mobile app we developed called “ Jenz ,” a new social network for companies. New Trends Sharing private pictures with colleagues from work is getting more popular Even in the BC era (Before Corona), many interesting new trends were emerging. Not that long ago, work was being left at work. People had friends, and they had colleagues. Those two rarely interfered. But, in the last decade, trends have changed! People are now making close personal relationships at work, and many companies come to an understanding that culture and employee engagement are becoming essential in running a profitable business. Here are some interesting stats: 69% of people think that modern businesses of today need a work-based social media. — Deloitte 400% average increase in revenue growth by companies with a strong culture vs. standard culture — Forbes Only 18% of employees think their organizations are transparent enough. — Slack The Problem More than 30 Q engineers worked on Jenz over the course of 18 months Since our beginnings, we were extremely aware of the importance of having a strong corporate culture and high employee engagement. That is why we always invested heavily in our people and their satisfaction at the workplace. From music instruments, sport and games requisites, language courses, and yoga classes, to social gatherings and events, BBQs, outdoor activities, game nights, and more. But, the faster we grew, the more challenges we encountered in keeping everyone connected and included! We tried using all available communication channels: Slack, Emails, WhatsApp, Newsletters, and even YouTube. Sounds good, but it doesn’t work. The proper “just in time” communication became a massive problem for us. Talking to 150 people daily, making sure every information reaches out to every person, while avoiding lengthy and boring emails, and including everyone in all the activities became mission impossible. Some of the biggest problems and obstacles we faced were: Sharing relevant information and keeping our people informed Communicating company strategy and plans Reaching out to every person and making sure everyone feels included Promoting company values and vision for the future Giving employees a platform for anonymous feedback Making sure that what our clients say is heard across the entire company Openly acknowledging individuals who deserve kudos People. Didn’t. Feel. Connected. The Solution We searched the internet, spoke to dozens of our clients and partners, and we learned there was simply no proper solution in the market, not even close to the extent that we needed. So we got to the point where the only way to solve our problem was to create our own solution. The decision was made to internally develop our very own mobile application, which will address the above-mentioned issues. We approached this very carefully, doing A LOT of research and trying to incorporate the best features into one single app, without making it too complicated or too cluttered. In a desire to avoid resistance that often occurs when companies implement a new tool, the emphasis was on building a UX that is modern, slick, colorful, joyful, and visually attractive. Jenz history in numbers: 10.000 hours logged 18 months dedicated 250.000 euro invested 30 people involved What is Jenz? The best way to describe Jenz is to say it’s a “closed social network” where you post literally anything that your employees will find meaningful. It’s ideal for mid to large-size communities where employees often lack vision and a bigger picture. By connecting employees to the Jenz app, you can share all important info about the company in a second, and then immediately get feedback if needed. You can motivate your people to get to know each other better and to work more closely with each other. Jenz unites people, creates engagement, stimulates communication, and feedback. It brings the best out of the company culture and strengthens that feeling of connectedness so that people feel they are part of the same tribe or clan. Hence the name “Jenz” — the phonetical inscription of the Latin word Gens, which is defined as a Roman clan consisting of a group of people united by the same goals, values, and lifestyle. “Jenz is the perfect solution for today’s home-oice mode. It has a look and feel of Instagram or Twitter, it’s super easy to use, and the onboarding time is minimal.” — Deloitte What does Jenz do? The app has 6 main features and serves as one single social network within the company. Anything important or relevant gets posted on Jenz, so employees can scan the app for just 1 minute per day and stay informed and connected. 1. Oicial Stories To solve the problem of not reaching out to everyone with important company information and announcements, and avoiding sending long and boring emails, we developed a Story newsfeed for oicial company news. To make news more attractive and easy to absorb, the format of each story includes one or more pictures or a video. After all, a picture is worth a thousand words, and video a million, right? 2. Social Stories Another section of the story newsfeed is fun casual stories, where everyone can post fun, personal, interesting, engaging, or educative content. Jenz UI reminds of a social network, so users feel more relaxed, engaged, and comfortable to post, like, and comment on stories. This creates a strong community and conectedness. 3. People Directory Here you can reach out to anyone easily, call them or send them an email just by searching them by their name or department. New employees are highlighted, which turns out as a great conversation starter. Every employee has a profile with a picture, department, job title, and a short bio. 4. Kudos & Recognition Reward, recognition, and feedback are essential for promoting good company culture and growth. Everyone appreciates their work being acknowledged. By one click on a colleague’s name, and voluntary explanation, people can kudos each other, which goes directly to the chosen coworker, their team lead, and HR. 5. Employee Feedback Shoutbox gives employees a chance to write anything they wish, completely anonymously, and pick which department that message goes. This grants every person a voice! It could be a complaint, suggestion, advice, or quick info about something not working in the oice. Easy, but most of all, eicient! 6. Anonymous Surveys Find out what people think in a snap! Multiple forms of questions, like rating scale, multiple-choice, and yes/no questions, are great for collecting unbiased data, and for better insight on employees’ feelings and attitudes, there are open-ended questions. We created polls mostly because of our need to get answers to short and quick surveys, fast and easy. “Jenz unites human faces, their talents, strengths, aspirations, and ambitions. It builds an internal culture with engaged and driven employees with a strong sense of belonging. That’s how brands are becoming strong and incredible.” — Zelebrand International Amazing Results! We soft-launched Jenz 4 months before the global crisis hit. Firstly, we onboarded only the pilot group to test it and try it out before releasing it to everyone. This helped us polish the app, grow our pool of ideas for further development, and plan our strategy for the future. Today, we can see a very concrete and tangible impact. Despite our entire oice working remotely during the crisis, the results of our internal surveys have never been better: 86% trust the Senior Management is making the right moves 87% have great communication with their teams, despite working from home 90% of people are feeling supported by their superiors 96% have a clear understanding of the expectations during remote work March and April have been financially the best months ever in the history of Q, despite the COVID-19 We already have a saying at Q: “That’s so cool, we should Jenz it.” That’s our way of keeping everyone included, informed, and attached to Q. Jenz enables us to unite people’s faces, their talents, their strengths, aspirations, and ambitions. It builds an internal culture with engaged and driven employees with a strong sense of belonging. And that’s the only way how businesses can stay strong, incredible, and can continue to grow during the crisis. Conclusion The global pandemic is profoundly impacting the world as we know it. With everything happening around us, the task of keeping people motivated is harder, but also more crucial than ever. Jenz unites and connects all employees, informs them about everything that’s going around in the company, stimulates them to communicate more with each other, and listens to their opinion. This makes people feel safe and happy. In Q, during these uncertain times, we want to give people a sense of purpose bigger and stronger than just the task of working for the employer. By uniting our people into our own social universe, the Jenz app creates a sense of belonging, sense of pride, and motivation. This kind of “esprit de corps” will kick ass in any circumstances, including the most recent pandemic. Life goes on, business goes on, f*** Corona, let’s Jenz ! Filip Ljubic Filip is a passionate leader with a strong international background with over 15 years of executive experience. In his free time, he loves being in nature, hiking, and enjoying family time with his 3 kids. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 6, 2020 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 6, 2020 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Handle Changing Requirements and Prevent Team Burnout - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-handle-changing-requirements-and-prevent-team-burnout/ In this blog post, find out how to prevent team burnout by handling requirements changes that come rather often when managing projects. How to Handle Changing Requirements and Prevent Team Burnout | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Handle Changing Requirements and Prevent Team Burnout How to Handle Changing Requirements and Prevent Team Burnout March 31, 2026 — 10 min read Projects rarely go exactly as planned. I’ve been on plenty of projects where everything seemed set up perfectly: We had clear sprints, defined tasks, solid deadlines and yet somehow, by mid-week, everything was shifting. Priorities would change, new requests would pop up or a client meeting would completely reshuffle the plan. And suddenly, the team that felt in control yesterday was scrambling today. The tricky part isn’t the coding or the tech. It’s keeping the team together when every day looks different. I remember one Monday when we had just finished grooming the backlog and by the next morning half the priorities had changed. I could see the frustration building . People were looking at each other like, “Wait, what now?”. This situation made me realised that no amount of planning would make things smooth until we found a way to handle these constant shifts. Why Changing Requirements Are So Challenging In theory, frameworks such as Scrum or Kanban are created to handle change . They promote flexibility and regular priority changes. In reality, however, changing requirements can cause frustration and make people feel overwhelmed. Working with a US client taught me quickly that the hardest part isn’t the time zone or the tools. It is how priorities can flip in a matter of hours . On Monday afternoon we’d finish backlog grooming and everyone knew what to focus on. By Tuesday morning, after an internal client meeting, the top priorities had already changed. What was urgent yesterday suddenly didn’t matter and new tasks appeared out of nowhere. The client had multiple departments: Sales, Marketing, Development. Each had their own agenda. Sometimes we’d get conflicting instructions: Sales would push one feature, Marketing another and Development would flag something completely different. Add to that the fact that they were working with other vendors, and you quickly realise how many tasks arrived with missing details. Sometimes developers would finish coding a task, QA wasn’t able to test it because some details were missing. Sometimes deployment got stuck while we waited for clarification from the client. All of these small disruptions were frustrating and the real problem was how it started affecting the team . Even senior developers, who usually deal with the chaos well, started showing signs of stress. I remember a 1:1 meeting where a developer told me, “I’m finishing Task A, then Task B became urgent and now Task C showed up overnight. I have no idea where to start.” In our retrospective, several people said almost the same thing. We realised we were constantly chasing a moving target. Every time we thought we were making progress, something would shift and it caused frustration and energy loss. Impact on the Team The constant changes started to reflect on the team. It wasn’t that the work was too hard. We had senior developers in the team, which were used to handling complex projects. But even for them, priority shifts caused frustration and lack of sense of accomplishment. In retrospectives, the same concerns kept coming up: Context switching : Developers were moving from one task to another multiple times a day. They’d barely get into the flow when something new popped up. One said, “I can’t even remember where I left off before the next task hits.” Incomplete information : Tasks often came with missing specs or unclear requirements. QA couldn’t move forward, and deployment stalled. It created a constant feeling of “waiting for someone else.” Conflicting priorities : The client would ask for estimates but also set fixed deadlines. Requests sometimes came overnight, forcing the team to drop everything and react. Even when the client gave positive feedback or a quick “nice job,” the pressure didn’t go away. You could notice it even during online meetings. My team members look tired even at morning daily meetings, I could sense frustrations popping up in Slack and they had heads down after long calls. The team was working hard, that was never the issue. But after a while, you could see people getting tired of the constant changes. Finishing something didn’t feel like a win anymore because something new was already waiting. It was like we were in the loop with tasks. Stuck and not moving forward. I’ve then realised that if we continue like this, both the team and the project will fail. We needed to change how we were working, not just try to keep up with everything that was coming in. The Role of the PM as a Servant Leader At one point, I also had to rethink what the role of project manager actually was. Up until then, a big part of my job looked like planning, tracking, reporting. But none of that was helping when the team was stuck or frustrated. I remembered something from PMP and PMI-ACP courses about the PM being a servant leader . At the time, it sounded nice in theory, but a bit abstract. On this project, it finally clicked. I figured out that I don’t need to have all the answers. But I have to protect my team, move the obstacles so that they can do their job without being constantly under pressure. That mostly meant stepping in where things were getting messy. If a task was blocked because we were missing input from the client or another vendor, I didn’t want developers sitting around or guessing. I’d go chase the information, jump on calls, clarify things, whatever it took so they could keep moving. I also started being more careful about what actually reaches the team . Not every client request needed to land directly on a developer’s plate the moment it appeared. Before, things would come in and immediately create pressure. Now, I’d pause, look at the bigger picture and decide when it actually made sense to introduce something new. One thing that changed a lot was how we handled priority shifts. Instead of telling someone “drop this and do that,” we’d take a minute and talk it through. What’s already in progress? How close are we to finishing it? Does it make more sense to finish this first or switch? Those small conversations actually helped more than I expected. Instead of people just dropping everything and jumping to the next thing, we’d pause for a minute and figure out what makes sense. I remember one situation where a developer was halfway through a task, got blocked and was ready to pick up something completely new. A few hours later, the missing info arrived and he had to go back again. That back-and-forth was exactly what was quite exhausting for the team. Once we started slowing that down things became less chaotic. It still wasn’t ideal. Priorities were still changing and thighs were still not fully under our control. But at least we were not in firefighting mode every single day. Steps We Took to Stabilise the Situation We started with baby steps. Instead of fixing everything at once, we picked a few things that were causing the most distraction. The Product Owner and I went through the backlog together, item by item. We were asking simple questions like “Do we still need this?” or “Is this even relevant right now?” Some things stayed, some got pushed and some were removed completely. We also noticed that everything was top priority. A small bug could suddenly feel as urgent as a bigger feature. So we split things a bit more clearly, dividing them into feature work, bug and business work. We’ve finally created a roadmap with clear priorities. Another thing that caused a lot of stress was how tasks were assigned to people. It wasn’t unusual for someone to start the day and already have something new assigned as “high priority.” We stopped doing that. Instead, tasks would first go through me, and then we’d decide when it actually made sense to pick something up. Timing also became more important than just priority. If someone was already deep into something, we’d let them finish instead of interrupting them right away. That alone reduced a lot of unnecessary switching. Blocked work was another pattern we had to slow down. Before, the moment something got blocked, the default reaction was to jump to something else. After a few days, that meant a bunch of half-finished tasks. So we started pausing for a second and asking what actually made sense, wait a bit or switch. Just being intentional about that helped more than expected. None of this was anything revolutionary. We didn’t introduce new tools or big processes. But it was enough to make things feel a bit more under control. The client was still changing priorities, that didn’t go away, but it no longer felt like we were constantly chasing everything at once. Feedback from the Team After a few weeks, retros started sounding a bit different. At the beginning, people were mostly just frustrated. Same comments, same problems, just repeated every time. But later on, the tone shifted a bit. Not perfect, but less “what is going on” and more “okay, this is better, but this still annoys me.” One thing that kept coming up was priorities. They were still changing, that didn’t magically stop. But it wasn’t as chaotic as before. At least now things didn’t just land on the team out of nowhere. There was some flow, some logic behind it. I remember one comment where someone said, “It’s still changing, but at least now I know why.” That stuck with me. Nothing huge changed, just more context, but it made a difference. Boundaries also came up a couple of times. Not in a big way, but more in small comments like “I saw this message late last night” or “I wasn’t sure if I should reply.” That was enough to open the conversation. We didn’t overcomplicate it, just agreed on what’s expected and what isn’t. One thing that actually helped more than expected was forcing everything into tasks. Before, things would just appear in Slack or Figma and somehow turn into work. Now it was simple, if it’s not a task, it’s not happening yet. It removed a lot of that background noise. Not everything was fixed. Deployments were still a bit messy at times, especially on staging. There were moments when people weren’t 100% sure what was where. That part took longer to sort out. But overall, things got better. Not perfect but we’ve managed to remove that constant pressure we had before. People knew what was the priority. They were no longer switching every few hours. Key Takeaways / Lessons Learned Priority Instability & Scope Changes Constant shifts in priorities caused the most frustration. When I took a moment to explain why something was changing, the team understood better and felt less stressed. Communication Clarity with the Client New requests and late design updates were now routed through formal tasks instead of chat or Figma. This made expectations clear and reduced rework. Task Assignment & Workload Awareness The PM started assigning tasks with awareness of each person’s current capacity. This small shift cut down on unnecessary context switching and frustration. Handling Blocked Work Instead of automatically moving people to the next task when blocked, we paused and decided consciously what made sense next. This improved focus and completion rates. Process Visibility & Ownership Grouping tasks, mapping a rough quarterly direction and separating ongoing work from bugs gave the team a better sense of control and order. Conclusion This wasn’t about having perfect processes or removing every last change. It was about small steps: clarifying priorities, organising tasks and giving the team some visibility into the work. None of it fixed everything , but it made the day-to-day work feel less chaotic and a bit easier to handle. Vinka Đurđević Vinka is a senior project manager with more than 12 years of experience in IT. She is a certified Scrum Master, PMP and Agile Practitioner with a background in software development and Salesforce. She enjoys working on dynamic projects and loves collaborating with teams to get things done. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 31, 2026 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 31, 2026 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Improve Your Code by Reducing Cyclomatic Complexity - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-improve-your-code-by-reducing-cyclomatic-complexity/ Learn how to improve your code by reducing cyclomatic complexity. Write cleaner, maintainable, and testable code with practical tips and examples. How to Improve Your Code by Reducing Cyclomatic Complexity | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Improve Your Code by Reducing Cyclomatic Complexity How to Improve Your Code by Reducing Cyclomatic Complexity March 22, 2026 — 8 min read Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program’s source code. As cyclomatic complexity grows, the code often becomes more cognitively demanding to understand. Developing software solutions carries many challenges and complexity is one of them. Handling it can be approached from different angles — keeping cyclomatic complexity in check is one of those angles. In this article, we discuss how cyclomatic complexity emerges, how it is measured, and ways to reduce it with various good practices and a bit of psychology. What is complexity? Let’s start with the tautology: complexity is a complex topic. Neil Johnson states that “even among scientists, there is no unique definition of complexity – and the scientific notion has traditionally been conveyed using particular examples…” Humans have ambigual relationship with complexity since it has the double connotations. At the same time, we can perceive it either positively or negatively, depending on the circumstances. There is no unique complexity, but rather many contextual and situational ones. Where there is interaction, complexity inevitably follows . Various interacting components – humans, ants, neurons, stars, lines of code – gather into the networks that form complex systems. Most complex systems follow simple rules without a centralised focal point, but still collectively produce sophisticated behavior. They have the ability to process information and adapt through evolution or learning to improve their chances of success. They are characterised by “emergence,” a phenomenon of complex and unpredictable macroscopic patterns arising naturally from the interaction of many simple parts. Emergence is important in the programming context, since individual parts interact to create behaviors that no single line of code “knows” about. For example, a single if/else statement is a simple rule, but tens or hundreds of them interacting in a complex environment create emergence. When emergence runs unchecked, the result is often the opposite: the emergencies in the form of spaghetti code which is tangled, opaque, and costly to read, maintain, and debug. Meet the cyclomatic complexity But the question remains: how do we measure such intricacy? Unfortunately, since there is no common and agreed definition of complexity , there is also no universally accepted quantitative measure to determine exactly how complex a system is. While complexity itself can be elusive, we use proxies, the practical metrics that quantify its various dimensions and offer actionable insights. Cyclomatic complexity is one of them. It counts decision paths. It can be paired with cognitive complexity that tries to reflect how hard code is to understand. Such measures don’t give one “true” complexity number, but they do give us concrete signals to simplify, refactor, and reduce risk. It is also important to keep in mind that all those metrics are relative and not absolute values. Developed by Thomas McCabe in 1976 , cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program’s source code. It isn’t inherently bad. A function can have a high cyclomatic complexity and still be easy to read. The problem is when complexity becomes excessive: that’s either a sign of existing design issues or a source of future ones. Cyclomatic complexity is one factor that feeds into cognitive complexity, or how hard a piece of code is to understand. The higher the cognitive complexity, the harder the code is to navigate, reason about, and maintain. When it comes to cognitive complexity, few concepts are as foundational as “The Magical Number Seven, Plus or Minus Two.” First introduced in 1956 by George A. Miller, this principle suggests that the average human mind can only process or hold about seven functional units of information, usually called chunks, in its short-term memory at any given time. Whether it was remembering a string of digits, a list of words, or the parameters in the method’s signature, this number was almost a recurring constant. When it comes to coding, by acknowledging that the typical cognitive limit is 7±2, developers can “chunk” complex information into smaller, digestible methods to prevent mental fatigue. The numbers and what they mean The minimum cyclomatic complexity is 1. To calculate beyond that value, following rules apply: The Floor is 1: Every function starts with a base score of 1 (the straight path from start to finish). The +1 Rule: Add 1 for every decision point or loop. The Keywords: Branching: if, else if, switch/case, catch. Looping: for, while, foreach. Logic: &&, ||, and ternary operators (? :). This is true for most languages, but not all (e.g. pure functional programming languages). Also, you don’t have to do calculations manually. Almost every modern IDE has the possibility to calculate the cyclomatic complexity, either by built in static code analyzers or third party ones. Once the calculation is complete, the resulting value can be interpreted using the following benchmarks: 1–10: Clean, testable, and stable. 11–20: Moderate risk 21–50: High risk; “Spaghetti” territory. 50+: Untestable; burn it down and start over. A cyclomatic complexity between 1 and 10 is widely considered good for clean, testable, and maintainable code. That range aligns with Miller’s magical number 7±2. The usual limit on how many chunks of information people can hold in working memory at once is closely related to code’s readability and maintainability. Here is how that looks in code. The first example has cyclomatic complexity score 11. public string ValidateUser(User user) { if (user != null) // CC +1 { if (!string.IsNullOrEmpty(user.Username)) // CC +2 { if (user.Age >= 18) // CC +3 { if (user.HasAgreedToTerms || user.IsAdmin) // CC +5 (|| adds 1) { if (user.Email.Contains("@") && user.Email.Contains(".")) // CC +7 (&& adds 1) { return "Valid"; } else { return "Invalid Email"; } } else { return "Terms not accepted"; } } else { return "Too young"; } } else { return "Missing Username"; } } else { throw new ArgumentNullException(nameof(user)); // CC +1 (implicit) } // Total CC: 11 (including base path and all branches) } The optimised version has a score of 5. public string ValidateUser(User user) { // 1. Guard Clause for null (CC +1) if (user == null) throw new ArgumentNullException(nameof(user)); // 2. Simple checks with early returns (CC +3) if (string.IsNullOrEmpty(user.Username)) return "Missing Username"; if (user.Age < 18) return "Too young"; // 3. Combined logical check (CC +4) if (!user.HasAgreedToTerms && !user.IsAdmin) return "Terms not accepted"; // 4. Final validation logic (CC +5) bool isValidEmail = user.Email.Contains("@") && user.Email.Contains("."); return isValidEmail ? "Valid" : "Invalid Email"; } This metric is not without limitations . Counting the number of decision points in the code is a simplification of McCabe’s proposed method of calculating its complexity. Also, cyclomatic complexity does not consider nesting of control flow structures. A function with three sequential for loops produces the same complexity metric as one with three nested loops. Yet, as already mentioned, nesting significantly increases cognitive load, making the code harder to maintain and more prone to quality issues. Eating that spaghetti There are actionable items that the developer can implement to reduce both the cyclomatic complexity and the chances to deliver the spaghetti code: Use small methods Reduce if/else statements Implement early returns Leverage polymorphism Remove obsolete code Eliminate duplicated code Also, it’s wise to keep “The Magical Number Seven, Plus or Minus Two” in mind and try to follow these good practices to keep cyclomatic complexity in check: Limit parameters per function – Keep argument lists short (e.g. ≤ 5–7) and use objects or builder patterns when you need more. Name for meaning, not brevity – Use names that carry intent so readers don’t have to hold many mental “slots” to decode what something does. One level of abstraction per function – Don’t mix low-level details with high-level flow in the same routine, instead each function should read at a single conceptual level. Limit local variables in scope – Fewer live variables in a function reduces how much the reader must track at once. Keep related code close – Put related logic and data near each other so “chunks” are easier to form. Use small, focused modules – Follow single-responsibility principle, a class should have only one reason to change, meaning it should have only one job or responsibility. Key Takeaways Cyclomatic complexity is one code metric that can help to improve the code quality. Paired with Miller’s principle, it can greatly help to reduce the cognitive strain and eliminate the spaghetti code. The result? Code that is not only easier to read and understand, but also far more sustainable to maintain . Tomislav Bali Tomislav is our Engineering Lead specialised in .NET development. In his free time, he is a history buff who loves exploring the world on two wheels or on foot. He is equally passionate about his quest for the perfect pancake or croissant. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 22, 2026 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 22, 2026 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Job Interview - How to Leave a Good Impression - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-leave-a-good-impression-on-your-next-job-interview/ Practical tips for job interviews Job Interview - How to Leave a Good Impression | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Job Interview – How to Leave a Good Impression Job Interview – How to Leave a Good Impression June 20, 2022 — 6 min read If you are like me, job interviews can be stress-inducing, and you’ll probably worry the most if you’ll leave a good impression and if you’ll even be able to go through them because of your stress. Luckily for you (and me), I’ve worked hard to overcome those obstacles and researched a lot on how to leave a good impression through presenting yourself as best as you can and how to prepare for it and lower your stress beforehand mentally. Get to know yourself If you want others to know you, you need to know yourself first. So what I’m trying to say, without this philosophical BS , is to go through what you want to say about yourself, your experience, your hobbies, and most importantly, your ambitions and expectations from your employer (I’ll cover this more later). Here’s a list of the most frequent things employers asked during the interviews I had: My past experience? Projects I’ve worked on? What I’m good at? The most stressful situation I’ve been in and how I handled it? What do I do in my spare time? What are my hobbies? What did I find interesting about them to make me apply for the job? Before the interview, try to relax and do something inside your comfort zone , what usually keeps you calm. Many psychological things affect your mind, even unconsciously. Don’t get dressed right before the interview. If the interview is online, have the interview in a room where you usually relax, like the living room. If the interview is at the company premises, arrive 20 minutes earlier . I’ve read somewhere that getting accustomed to the area around the building where the company is, makes you less stressed because your brain will stop associating the area with this stressful situation you are currently in. If there are people around the building, do small talk. If you’re not that kind of person, hang around and admire the area, smile and count stuff you like about the area. A thing I also noticed is that employers like honesty . So be honest about yourself and your experience and competencies. Don’t overhype yourself, or you’ll end up in a position you won’t like. If you make an image about yourself where you have more experience than you have, your employer will have much higher expectations from you , and tasks you’ll get will be harder, and you might not be able to finish them or finish them on time. Get to know them This is probably the most crucial part of leaving a good impression. Let me first tell you this. It doesn’t matter how much experience you have or how “desperate” you might be, and you can still have expectations, wishes, and goals about your future job and employer . So don’t let anyone tell you and make you feel bad for not taking a job when you are unemployed if you didn’t quite like the employer . Having your expectations from your employer is what most companies value. It means you are not someone that is desperate and will take any job no matter what. Instead, it means you are interested in them and would like to work with them, and you are considering them because of what they are and offer. Employers want attention as much as you do. They want to feel not just that you want to work for them, but they also want to think that you like them. First thing you should do before an interview is to research what they do , what benefits they offer , company culture and tone of voice , recent news , and blogs , interesting facts , etc. Take out from all that info what you liked and found interesting. The second thing is to make a list of questions you’d like to ask them. I’ve done quite a bit of research on what are good things to ask and what will make you sound interested in them and leave a good impression. Here’s the list: What do you expect from me in the first month, after 3 months, and after 6 months? What does one typical day look like in this position I’m applying for? Will I have a mentor, and do you have onboarding processes? Do you offer education? How is performance measured, and how does the promotion process work? What benefits do you offer? What kinds of projects do you take? Besides those questions, ask anything specific for them. Remember this! The worst thing is not to have any questions at all! The job interview is a dialog, not an interrogation. Just as a company chooses a candidate, you select the company you will work for. Rebound Sometimes the interviews won’t go as you expected, or the outcome won’t be as you wanted. If they don’t hire you or advance you to the next round, it’s not your fault. It’s not their fault either. They were searching for someone with a different skillset and experience than yours, or they DID want to hire you but didn’t because they didn’t have resources to allocate to educate and invest in you. Not everything is in experience and knowledge . Many companies like to maintain a particular “atmosphere” within the company and want to hire a person based not only on their knowledge and experience but also on their personality. A person can be the smartest person in the world, but who cares about that if they are a jerk. That’s why companies also look into your personality and evaluate if you would be a cultural fit. That was one aspect that you have to remind yourself of when the outcome was negative – the psychological aspect and how to keep your chin up. The other aspect is how you can improve experience and skill-wise. That’s where feedback comes into play. Always ask for feedback. If they are broad about it or they give you quick feedback…GG no RE, you just saved yourself from a feedback-less environment where you would never improve and learn more. If they give you feedback, work on that! Even if the feedback is specifically for that company’s assignment, you’ll still learn something new and do better next time on some other assignment. Thumbs up, let’s do this! Don’t let yourself be put in a position where you’ll start to think that you are not worth too much or don’t know anything. Someone out there is looking for a person that the mix of your personality, competencies, and experience are fit for the job. If you don’t get the next job, GG, go next! Learn from your past experiences , and don’t let go of your dreams! Don’t listen to people saying that you are not really in a position to “demand.” You are not “demanding” anything! You don’t want to work a job you won’t be happy at! Not everything is in money! So get out there and knock their socks off! I know this blog probably hasn’t solved your problems, but I hope it helped a bit. Alen Viskovic IT project manager that puts the team-wellbeing in the first place. As I always say: “A happy team is a productive team!”. I love cooking, photography, nature, succulents, and card games. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 20, 2022 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 20, 2022 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Seed Data With Symfony Hautelook Fixtures - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-seed-data-with-symfony-hautelook-fixtures/ Stop wasting time by filling your database with test data. Learn more about seeding data with Symfony Hautelook Fixtures. How to Seed Data With Symfony Hautelook Fixtures | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Seed Data With Symfony Hautelook Fixtures How to Seed Data With Symfony Hautelook Fixtures December 6, 2021 — 3 min read HautelookAliceBundle is a tool you can use to eortlessly seed test data for your development environment. The bundle utilizes a PHP library called Faker which generates the test data for you. Many times when we are developing a project, we waste lots of time by filling our database with test data . This is sometimes done manually by writing queries or just manually inserting data through our application. That usually involves a tedious process of registering a user, logging in as that user and adding test data. Often, we recreate the database and have to repeat the process over and over again. This data often ends up being gibberish and it is hard to read. In this article, we’ll go through the whole process of automating this and creating test data that actually makes sense. It’s pretty straightforward. In the past, seeding data wasn’t quite possible because in complex data structures seeding breaks down when we have related tables. Basically, there wasn’t even a tool to help developers get started with seeding related data. The biggest problem was with ordering data. Sometimes, there are many relations and it is hard to keep track of all the foreign keys so that we can insert the data properly. It’s challenging and you can spend a lot of time when you have more entities in your app. Now it’s much easier to resolve it with DoctrineFixturesBundle . But now comes something even more helpful for you to manage and seed fake data. Fortunately, there’s a great wrapper for DoctrineFixturesBundle called Hautelook/Fixtures – a third-party bundle that will greatly help with your fixtures management. Hautelook fixtures is a powerful tool to manage fixtures with nelmio/alice and fzaninotto/Faker. This extension allows us to persist the loaded fixtures and we don’t need to take care of which data will be seeded first. The database support is done in FidryAliceDataFixtures. In this blog, we will explain how to seed data into many to many relations. Technical Requirements Before creating your first Symfony application , you have to install: PHP 7.4 Symfony 5 or above Composer 2.1.5 MySQL or PostgreSQL Getting started We will be creating an app that will help us track blood donors. Use the following commands to create your project: composer create-project symfony/skeleton q_agency_blood_donation Doctrine already comes as standard ORM with Symfony, so we’ll assume you already have this covered. If not, take a look at the docs HERE . composer require doctrine-orm Additionally to speed up the development process we are going to install a Symfony helper library called MakerBundle. This bundle is the fastest way to generate the most common code you’ll need in a Symfony app: commands, controllers, form classes, event subscribers and more: composer require --dev symfony/maker-bundle A Symfony bundle to manage fixtures with Alice and Faker which allows you to create a ton of fixtures/fake data: composer require hautelook/alice-bundle After the installation is finished, take a look in the config/bundles.php file. The core features of Symfony framework are enabled for any environment while our installed third-party bundles are enabled for dev and test. So we will use the dev environment for local development: ['all' => true],     Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],     Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],     Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],     Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['dev' => true, 'test' => true],     Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle::class => ['dev' => true, 'test' => true],     Hautelook\AliceBundle\HautelookAliceBundle::class => ['dev' => true, 'test' => true], ]; Dependencies are prepared, let’s configure a database.You can find and customize this in the .env file. Just uncomment the environment variable called DATABASE_URL and set your database name, user and password: DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7" Now that your connection parameters are set up, use this command to create the db in your relational database management system: php bin/console doctrine:database:create In this example, we will show how fixtures work and what you can do. The Idea of this project is to manage related data with foreign keys . The feature of our application is that we have all the necessary information with just a few tables. Visualized diagram of our database Since this blog is about properly seeding our development environment, I will leave a challenge for the reader to create the entity classes. You can create classes standalone following doctrine documentation. So your next job after the classes are made is to create entities and make migration with the command: php bin/console make:migration Let’s Create Some Fixtures After creating your database, we are ready for development. Our next step is to configure the hautelook alice yaml file: hautelook_alice:     fixtures_path: fixtures There is a parameter for our path and it will load all the fixtures found in the fixtures folder in which we will define our dummy data . If you want, you can change your fixtures path: Then, in your root folder create a fixtures folder. There we will create and define our yaml files for seeding. First, we are creating eight dierent blood groups: App\Entity\BloodGroup:   bloodGroup_{1..8}:     name (unique): How? Don’t worry about it, faker/generator has implemented methods for blood groups. To understand how fixtures work, look at the BloodGroup structure of the tree above: The first node presents entity of object The second node reference object instance, range in bracket, presents number of objects And the last define property and its method Unique means that all those groups will be dierent. Now let’s create donor, a ten donors to be exact: App\Entity\Donor:   donor_{1..10}:     firstName:     lastName:     bloodGroup: '@bloodGroup_*' As you can see, donor_ {1..n} defines how many donor objects you will create. Methods firstName() and lastName are implemented in the faker generator class . Please pay attention to the bloodGroup property: @bloodGroup is a reference to the bloodGroup object defined in bloodGroup.yaml, and it calls the magic method get() and sets it randomly as foreign key created in the previous BloodGroup.yaml file. Now, we have to make bloodBank.yaml. In this example, we added a parameter as an addition to the email property: parameters:   email_param: red.cross App\Entity\BloodBank:   bloodBank_{1..5}:     name (unique):     email: '<{email_param}>'     phone:     address: After creating the bloodBank.yaml file, it’s time to create blood donation events: App\Entity\BloodDonation:   bloodDonation_{1..3}:     bloodBank: '@bloodBank_*'     location:     date: At the end we need to define the donorDonation.yaml file. Take another look at our database diagram. Let’s explain our ‘many to many’ relationship. One donor can have multiple blood donations, and one blood donation can have multiple donors . To avoid this problem, we created a third table with extra properties like blood amount and transaction success. This new table breaks the many to many into two one to many relations. As you can see, there are multiple definitions of the object. You can create more dierent references, but they all need to have the same root entity: App\Entity\DonorDonation:   donorDonation_{1..9}:     bloodDonation: '@bloodDonation_1'     donor:  '@donor_'     amount:     success:     #createdAt:   donorDonation_10:     bloodDonation: '@bloodDonation_2'     donor: '@donor_1'     amount:     success:     #createdAt:   donorDonation_11:     bloodDonation: '@bloodDonation_2'     donor: '@donor_2'     amount:     success:     #createdAt:   donorDonation_{12}:     bloodDonation: '@bloodDonation_3'     donor: '@donor_2'     amount:     success:     #createdAt: When we are done, we can try to seed these fixtures: php bin/console hautelook:fixtures:load You can always try this command when you make your first fixture yaml file. There is no reason to wait for it all to be finished. Every time you run this command, it will revert all your data. Besides, nothing will go wrong. Just be brave. Remark If you want to try to seed data without a processor , to avoid error, you should uncomment all createdAt properties in DonorDonation.yaml. Processor Processors allow you to process objects before and/or after they are persisted. Just create a new class. It doesn’t matter where it goes because the processor implemented the processor interface. And that means we have to have two methods: postProcess() and preProcess() Here is a preProcess example for a DonorDonation entity: setCreatedAt(new \DateTime());         $amount = (float)$object->getAmount();         $success = $this->donationSuccess($amount);         $object->setSuccess($success);     }     public function postProcess(string $id, $object): void     {     }     public function donationSuccess(float $amount): bool     {         return $amount > 0;     } } You shouldn’t have all the properties defined in the fixtures yaml file. For example, in DonorDonation.yaml, the createdAt property is commented. This property is setter in the preProcess method. Another example in this class is the success of transactions. A custom method is created to check if a donor is donating blood. Open your database and check donor_donation and blood_donation tables. Donor donation belongs to blood donation. However, you can see that related tables don’t match the same dates because the datetimeBetween method is randomly selected. To fix it, we will use one brilliant idea. In the postProcess method, we will get the date of the BloodDonation object and set this date to the donorDonation: entityManager = $entityManager;     }     public function preProcess(string $id, $object): void     {     }     public function postProcess(string $id, $object): void     {         if (!$object instanceof BloodDonation) {             return;         }         $id = $object->getId();         $date = $object->getDate();         /** @var DonorDonation $donorDonation */       $donorDonations =  $this->entityManager->getRepository(DonorDonation::class)->findBy(['bloodDonation' => $id]);       foreach ($donorDonations as $donorDonation)       {           $donorDonation->setCreatedAt($date);           $this->entityManager->persist($donorDonation);       }         $this->entityManager->flush();     } } We finally got to the end You can use the –purge-with-truncate option to switch from DELETE to a TRUNCATE purge mode. It will depend on your DBMS to clear auto-increment settings on that action: php bin/console hautelook:fixtures:load --purge-with-truncate If you followed all these steps exactly as described, you can execute your own query or copy this one below. Open your database CLI and run the query: SELECT bg.name as BloodGroup, count(d.id) as Donors_number, ROUND(SUM(dd.amount),2) AS BloodSum from donor_donation dd LEFT JOIN donor d on dd.donor_id = d.id LEFT JOIN blood_group bg on d.blood_group_id = bg.id GROUP BY bg.id ORDER BY bg.name And blood donation statistics will be displayed. Conclusion Instead of using the real data from the production database, it’s common to use fake data in the test database. We used methods implemented in faker class . With hautelook fixtures you can easily manage data and seed it without wasting your time. After this blog, you won’t insert data manually anymore. I hope that this article will help you improve your skills and that in future, you will use this amazing tool for seeding data . You can find and clone project source code on GitHub repository. Thanks for reading! Zlatko Spajic GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 6, 2021 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 6, 2021 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Start Web Automation Testing Using Selenium and Python - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-start-web-automation-testing-using-selenium-and-python/ Learn how to set up Python and Selenium for web automation testing, from installing the required tools to configuring PyCharm and writing your first automated tests. How to Start Web Automation Testing Using Selenium and Python | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Start Web Automation Testing Using Selenium and Python How to Start Web Automation Testing Using Selenium and Python December 23, 2021 — 7 min read In the following, you will learn instructions on how to set up, install and start using Python and Selenium . The intention is to help beginners (no matter what background they are coming from) to make their first step into web automation testing using Python and Selenium. The automation process Automation is a process of automating user behavior on a website. Basically, you can simulate clicking on website elements to check if everything is working and automate some mundane actions if you wish to do so. Therefore, Python and Selenium are used, as Python is powerful, easy to learn, and only basic understanding is required for this task. Selenium is one of the most popular tools for automation and can be used with every programming language. Let’s go through what needs to be done to start writing your first code and how it all works. Setting up your environment To start using web automation tools, you need to install Python because that code will be used in the tests. What’s needed: Python Some code editors (IDE) Browser driver to manipulate website elements Firstly, download and install Python. After downloading the correct file, start the installation process. This is an example of installing Python. Python installation Once Python has been installed, you need to update pip . Pip is a part of the Python package manager, which allows you to install and manage additional packages that are not part of the Python standard library. Open command prompt (for example win key + cmd) and enter: python -m pip install –upgrade pip Second, to make writing code easier, use a code IDE called PyCharm . PyCharm is a dedicated Python Integrated Development Environment (IDE) providing a wide range of essential tools for Python developers, tightly integrated to create a convenient environment for productive Python, web, and data science development. PyCharm installation screen Some alternatives to PyCharm are: Atom Sublime Text I’m recommending PyCharm as it’s easiest to use once you familiarize yourself with it, has easy Git integration , package handler, virtual environment (venv), etc. Using the most out of PyCharm Let’s set up the already mentioned PyCharm features to make coding easier. First, add an interpreter , so that your code can be read and executed. Click on the bottom right corner option, there should be an option to pick a Python version you installed, in this case, it was Python 3.9. Example: C: Users User AppDataLocal Programs Python Python39 In this step, a virtual environment (venv) was added to the project. At its core, the main purpose of Python virtual environments is to create an isolated environment for Python projects. This means that each project can have its dependencies, regardless of what dependencies every other project has. In other words, Project 1 doesn’t use or sees things from Project 2. Virtual environments can be activated and deactivated, so if you don’t need venv, you don’t need to use it. Interpreter and venv settings Python packages Python uses packages via include commands in code. Some of those packages or libraries come with Python as default, but some extra ones users need to add so they could use them in the code. This is done in the settings, under the Project -> Python Interpreter option. As you are using Selenium, you need to add the latest Selenium package to the project. This is done by clicking on “+” and searching for “selenium” and choosing the install package option or by opening PyCharm’s terminal and entering pip3 install selenium . Package manager IMPORTANT NOTE Before pushing to Git, you need to do a command which saves the list of all python packages to a file. That file, when another user pulls it, tells pip to install those dependencies for the code to work. Terminal command pip freeze > requirements.txt This is to prevent errors when another user pulls (downloads) your code and tries to use it. Using webdriver Finally, you need a webdriver to be able to manipulate the browser. In this example, I’m using Chrome and Windows so keep that in mind. Webdriver can be added in 2 ways: 1. Automatically Adding “webdriver-manager” that handles downloading and installing the latest version of driver to use in test Via python package handler Project -> Python Interpreter option or via pip3 install webdriver-manager This way user doesn’t need to worry about downloading and putting the latest webdriver on the file system 2. Manually Downloading latest webdriver and putting it on file system so script can locate it and use it Download desired webdriver from URL. After downloading the preferred option, locate the .exe file and copy it to your Python folder or paste it in your venv folder to have a specific isolated Python test using only for example Chrome as your testing browser. Example: C: Users User AppData Local Programs Python Python39 Automation example The Selenium package allows us to manipulate website elements and the added webdriver tells Selenium which browser to use (Chrome, Firefox etc.) Provided code bellow explains a basic Google search test and has 2 examples of web driver implementation. The automatic option requires webdriver manager import and initialization and the manual one requires putting the webdriver to correct PATH and initialization. Check out this code for a basic example: import time from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager #add this line and import if using webdriver manager for automatic webdriver handling browser = webdriver.Chrome(ChromeDriverManager().install()) #add this line if using manual webdriver download and set up #use Chrome browser # browser = webdriver.Chrome() #open Google page browser.get("https://www.google.com/") browser.maximize_window() #accept cookies on pop up modal browser.find_element_by_xpath('/html/body/div[2]/div[2]/div[3]/span/div/div/div/div[3]/button[2]/div').click() #enter string "dogs" into search bar browser.find_element_by_name("q").click() browser.find_element_by_name("q").clear() browser.find_element_by_name("q").send_keys("dogs") time.sleep(10) #click on Google search button to get results browser.find_element_by_name('btnK').click() #close browser session browser.quit()import time from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager #add this line and import if using webdriver manager for automatic webdriver handling browser = webdriver.Chrome(ChromeDriverManager().install()) #add this line if using manual webdriver download and set up #use Chrome browser # browser = webdriver.Chrome() #open Google page browser.get("https://www.google.com/") browser.maximize_window() #accept cookies on pop up modal browser.find_element_by_xpath('/html/body/div[2]/div[2]/div[3]/span/div/div/div/div[3]/button[2]/div').click() #enter string "dogs" into search bar browser.find_element_by_name("q").click() browser.find_element_by_name("q").clear() browser.find_element_by_name("q").send_keys("dogs") time.sleep(10) #click on Google search button to get results browser.find_element_by_name('btnK').click() #close browser session browser.quit() Check out this code to see an example of subscribing to a newsletter: from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time # initialize browser browser = webdriver.Chrome(ChromeDriverManager().install()) browser.get("https://q.agency") # open full screen browser.maximize_window() # wait for title to appear so we know everything on the page is loaded WebDriverWait(browser, 10).until(     EC.presence_of_element_located((By.CLASS_NAME, "c-navigation__list"))) # scroll to bottom of the page so we have our element in focus browser.execute_script("window.scrollTo(0,document.body.scrollHeight)") # find field to enter email to subscribe to our newsletter newsletter = browser.find_element(by=By.NAME, value="email") # click on it to focus it newsletter.click() # clear if any data is entered newsletter.clear() # enter you email here to subscribe, has to be a valid email newsletter.send_keys("email") # click on subscribe button browser.find_element(by=By.CLASS_NAME, value="c-newsletter__emailBtn").click() # pause to see our entered value, don't need this normally time.sleep(10) # after all is done clear session and close the browser browser.quit() Be careful to use unique element identifiers , so you are sure that you are using the desired element. The best way is to use element IDs and names, but that is in the perfect world where everything is as it should be. More realistically, you will be using xpath commands. Here you can find a list of commands for locating elements . Element attributes can be found by opening console ( f12 ) on a web page or right clicking->inspect option. Conclusion Hope this little tutorial helped you to see what is needed to start writing your own web automation test using Selenium and Python. Selenium and Python are widely used and fairly easy to start learning. The example used in this tutorial is basic but sets you up to start understanding what is needed to use web elements and webdrivers to manipulate web elements to do what you want them to do. Hrvoje Pioker Hrvoje is a QA with a background in a bit of everything. Former developer, switched his passion to QA to help ensure product quality and help others to deliver the product as it was agreed on. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 23, 2021 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 23, 2021 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to survive remote work? - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-to-survive-remote-work/ Learn how to survive remote work with practical tips from Q, including setting up a workspace, managing work hours and avoiding distractions. How to survive remote work? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to survive remote work? How to survive remote work? May 12, 2020 — 3 min read Since the corona crisis hit us all, our responsibility was to change our working space from oice to home, but no matter how fun that may sound, this brings some diiculties. So here are a few tips and tricks by Q. 1. Decide on a workspace If you already have a home oice, then you’re good. But, many of those who don’t; try to find a place for your laptop, monitor, etc., and let that be the ONLY place where you are working. A couch is very comfortable, but it is very easy to get too comfortable. Let the couch have it’s basic purpose — resting and watching TV after work. 2. Set your workday hours Get up, take a sip of fresh coee or tea, and start organizing. Look at what you need to do and how many hours you need for all the daily tasks. The fact is that you need to set your own hours just as if you were in an oice. 3. Do get dressed and showered Although it’s tempting to work in your p.j.’s or bathrobe, that is not sustainable. You have to switch into work mode even if you haven’t left the house and getting dressed is one way to do it. Let’s be honest, we work in an IT company, we are never too formal, but changing from pajamas to sweatpants is already enough, buddy. 4. Eat good For those who think that you are what you eat, but work hours and work stress don’t give you enough time to prepare your yummy and healthy meals — this is your chance (presuming that you robbed the supermarkets on time. ;)) 5. Taking breaks is important You do need a proper break. I know you are at home, you are feeling comfy and you think that you don’t “deserve” a break. Leave your desk for lunch and take advantage of being at home to stay at home, because, well, at these times, we don’t have many options. 😉 Instead of going out for a walk (like we would do in normal times) eat your lunch and watch your favorite show. 6. Distractions, distractions, distractions You may think that you don’t have any distractions because you are now at home, your safe & calm place (considering you don’t have kids). But, it is actually more possible you will be distracted in a familiar environment. When you feel too distracted, put a load of laundry, empty the dishwasher, or use the extra time to finally fix that thing your wife has been whining around for days — a change of scenery is all we need to give our brain a break. 7. Work hard Cut yourself some slack and acknowledge the diiculty of the moment, but also, be responsible and mature. We are those who can help the economy, so not only do we have to stay at home, we have to stay at home and work hard! Keep your mind busy and calm. 🙂 Sara Madjer She has a diploma in Finance and Law and MBA in HR Management, which combined with her listening skills makes her a perfect fit for the People & Culture department. She is one of the oldest and most influential employees who grew together with Q. Sara also has her own show ”Coffe with Sara“ (Kavica sa Sarom). GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 12, 2020 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 12, 2020 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Value-Driven Delivery Outperforms Traditional Project Plans - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-value-driven-delivery-outperforms-traditional-project-plans/ What do we consider to be a successful project? Learn how value-driven delivery outperforms traditional project plans and makes them more successful. How Value-Driven Delivery Outperforms Traditional Project Plans | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Value-Driven Delivery Outperforms Traditional Project Plans How Value-Driven Delivery Outperforms Traditional Project Plans November 28, 2025 — 7 min read What do we consider to be a successful project? Is it just ticking the boxes on the project plan or is it something completely different? How can we move away from checking the plans, and start measuring value? In many projects, success is still measured against the time and budget that was spent. But, we want to make a difference for users, business, and the future of the product. And to achieve that, we need to measure the value. Agencies and clients that understand this shift and co-create value are making an impact on the market. Instead of working through checklists, they work toward change. This is what value-driven delivery is all about, focusing on the results that matter most, not just the ones that are easy to track. So, why hitting deadlines doesn’t always mean success?. How Important Are Deadlines? While implementing the planned scope on time is still the major measure of success for many companies, agencies are searching for a more meaningful way of measuring project success. Meeting deadlines is important, but if we only focus on that we will not see the bigger picture . And that is the purpose of the project and what we want to achieve at the end. Teams that have deadlines to reach and are struggling with time often neglect the quality and value. Since they don’t have time and space to challenge the assumptions and explore better alternatives, they become less creative and work mechanically to finish their tasks. Developers can avoid raising risks, BAs can collect requirements without questioning them and managers become controllers instead of enablers. Value-driven delivery breaks this cycle by embracing challenges and improvements , instead of blindly sticking to a plan. If achieving the deadlines is not the most important goal, what should teams aim for instead? Redefining Success for Delivery Traditional project management celebrates output. Project managers track the number of released features, completed tasks and hours spent on the project. But in agile delivery, these metrics mean very little if they don’t translate into business outcomes. We can have a number of features that engineering managed to implement, but yet they might not mean much to a business. Shifting the focus from individual tasks to business outcomes requires having proper mindset and structure. This applies to everyone involved in the project. So what kind of mindset should teams have to be able to create value? The Value Mindset Value-driven delivery starts with clarity of purpose. Teams that understand why they’re doing the work make smarter and faster decisions. This alignment turns everyday work into something very important for companies. For agencies, adopting a value mindset means making business thinking part of every project and role . When people understand the “why,” their motivation and accountability will grow naturally. When value becomes the goal in agile teams, sustainable pace becomes normal. Teams are allowed to say “no” to unnecessary work because they can show why it won’t contribute to the overall goal. So, how can we show value in the early stage and before the project is finished? Showing Value Before the Project Ends In traditional projects, value is often shown at the end, when the whole project gets delivered. But in fast-changing environments which adopt agile ways of working, value is seen after each iteration. When the project is built incrementally it allows the teams to create and show the value frequently and adjust their direction after each sprint. Agencies that focus on early value do smaller releases and measurable process improvements . When clients are able to see the value produced by the agency at the beginning of the project, they become more engaged in discussions and the decision making process. Agile mindset plays a crucial role and enables both clients and agencies to focus on the right things. How is Agility Related to Creating Value? Having plans is good and comforting, it gives clients something to hold on to while waiting for a project to be delivered. But, in reality, plans start changing at the moment teams start to work on the project. This leads to late value and different outcomes that can significantly impact the business. When both agencies and clients develop agility and are able to adapt quickly and shift priorities based on feedback and business results, they are able to create value early and turn the unknowns and risks into new opportunities. For agencies, agility doesn’t only mean working in two weeks sprints and practicing Scrum . It means creating a culture with constant learning and improvements. When clients see that agencies are able to adapt quickly and be flexible, they gain more trust that they will build what is truly important to their business. Building a Value-Driven Culture The most successful agencies integrate value thinking into their culture . They don’t just run value-driven projects, they create a value-driven mindset as the long term approach to working with clients. This means that whatever skills someone has, their focus should be on the value. It’s not only sales and project management, it should be every person in the agency, who works with clients and can impact the direction of the project. Everyone can contribute to outcomes and business growth. That is how value-driven delivery transforms from methodology into culture. Everyone continuously creates, measures and celebrates success together. And this is where shared ownership becomes very important. Shared Ownership Long-term success in value-driven environments comes from shared ownership. Teams begin to think beyond their tasks and start looking at the entire system and what it delivers to the users. People within the teams are encouraged to put potential cost savings or revenue first and actively participate in work prioritisation, creating the direction for current and future iterations. They don’t just do the work, teams create plans together with product and project managers which contribute to ROI. This shift creates teams who can work in complex and uncertain environments and still have sustainable progress. To understand value-driven delivery better, here is how Q practices it in day to day work. What value-driven delivery looks like in Q We at Q work in different setups . In one set up the entire team is made up of agency experts including project managers, developers, QAs, BAs, designers and architects.. They build complete solutions while staying in close alignment with the client through sprint demos and short validation syncs. Another setup is client team augmentation , where agency experts are integrated directly into the client’s teams, becoming part of ceremonies and PI plannings. Regardless of which set up people work in, their focus is on early validation that they’re moving in the right direction. When people join the project, they don’t think about deadlines and tasks that someone else created. They want to know what business needs so they would know which problem to solve. In the Q full team setup , the team runs the discovery first, to determine the business needs, create requirements and validate assumptions with the client. Regular demos during development are treated as checkpoints to validate the solution against the user flow that was created in the discovery phase, and to check if there is a better way to get the results. The team creates MVP, focusing on the features that will contribute to the results faster. In the team augmentation setup , Q experts are treated as equal members of client organisation, who suggest new ideas and improvements, remove blockers or hold presentations about better ways of working. They bring different perspectives that clients don’t have internally. Since Q experts are part of the team, value-driven delivery becomes part of the everyday work. Conclusion Value-driven delivery is the mindset which enables creating measurable impact on users and business. Instead of having strict plans, organisations create a culture where everyone focuses on value and creating ROI. When both agencies and clients focus on outcomes the result is stronger partnerships and better products. It’s not just the delivery date that matters, it’s the result that makes a difference. Irena Cvetic Irena is our Engineering Lead with years of experience in the BA area who likes exploring and learning new things through every day work and communication with others. In her free time she enjoys reading different kinds of books, listening to the latest music hits and drinking good coffee. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 28, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 28, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How YouTube Transformed Our Communication and Helped Us Stay Connected - Tech Consulting and Software Engineering URL: https://q.agency/blog/how-youtube-transformed-our-communication-and-helped-us-stay-connected/ Discover how Q used YouTube to improve internal communication, share company culture, and keep employees connected during the pandemic. How YouTube Transformed Our Communication and Helped Us Stay Connected | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How YouTube Transformed Our Communication and Helped Us Stay Connected How YouTube Transformed Our Communication and Helped Us Stay Connected November 1, 2021 — 5 min read As soon as the lockdown started, we knew that the way we communicated had to change, and it had to cmhange fast! Moreover, it was important to keep the level of transparency high during the times when misinformation was spreading quickly, and fear of tomorrow and COVID-19 consequences was present in everyone’s mind. That’s when we started our first video project on YouTube. Monthly Management Videos Lacking All Sta Meetings and chit chats in the oice, we were afraid our employees would lose essential strategic information. That’s why we started recording short monthly videos with all the relevant topics for our employees. At the end of each month, members of the Management team would record a three-minute video from their homes, and each would cover two to three crucial topics from the previous month. The videos are then merged into one, edited with extras like graphics, texts, and accompanying videos. We also insert some funny clips of famous sayings from movies and series to make the video ‘easier’ to watch and to keep the team spirits up! This format is also great for clear and concise communication, spiced with a bit of humor. The footage always comes out and without exception on the 1st of the month. Our COO Dalibor on a cover of the October Monthly Management Video. A few months and a couple of anonymous surveys later, we realized how good people reacted to the videos and wanted to keep them as a form of communication and information sharing regardless of the situation. The results were amazing! Each management video is watched by more than 90% of employees , which is mind-blowing! It was one of the best things we introduced during the pandemic, and it showed us what great potential video has, so we launched more video projects. What we loved most about videos was how they depict our culture and lingo perfectly, which cannot be done through any other format. In the meantime, the best creative solutions from social networks came from in this format, and people went crazy for video apps such as TikTok. It’s interesting to watch, it’s easy to convey information, and it’s fun. Obvious realization: Content that starts as video, can be downgraded to audio (in your pocket or as a podcast), which can be converted to text (via transcription or blog). But content can’t flow in another direction. Therefore, to a max audience for any content, start with the video. Sarah Tavel, Benchmark That’s why we decided to explore, what else can we do with videos and how can YouTube help us? Coee with Sara What started as a joke, turned into one of our strongest company culture weapons. Coee with Sara is a high production 15-30 minute series in which our Senior People & Culture Generalist, Sara, interviews guests with ten questions , precisely designed for them. In the series, she discusses important topics with the Management members or Heads and Team Leads. Video is broadcasted on YouTube once a month, and it’s shared internally & externally. All videos are uploaded to a common playlist. Videos are informal, educational, and fun. Topics include: important initiatives, strategy, new projects, modes of operation, etc. Coee with Sara is our most-watched video format Coee with Sara gives a clear picture of the organization and culture to future and potential employees. Interviews with Team Leads are included in the job ads for specific departments, so that future employees meet their superiors before they even join Q! Until now, there have been 16 episodes recorded out of which 7 have been publicly shared (outside Q). The results for 7 public episodes show 13,000+ views and 46,000+ people reached on YouTube only! Videos are also shared on our social media channels where they have a similar or better reach as well. Check it out. It’s worth binge-watching. 😉 Communication tool for our employees…and clients? Videos are a great channel for presenting and growing your company culture, but they also serve as a communication channel. After having such great results with the Management Monthly Videos, and Coee with Sara, we started to work on more videos and playlists. You can check our channel here . But what we didn’t see at the beginning is that videos can serve another great purpose. Client relations. We started Business Talks as a pilot, but it soon grew into another monthly series of videos. Our CEO, Filip , interviews one of our clients once a month, either online or in person. They are asked a set of questions about their business, personal life and goals, and collaboration with Q. Business Talks initial idea was to introduce Qumans to clients better. But seeing happy and satisfied customers and hearing more about how we work gives our new potential clients a sense of trust. To learn more about Business Talks, please check our blog Business Talks – Meet Our Clients through New Video Series . Is video a new way of communicating? Last year showed us the full power of social media and led us to use channels like YouTube that proved to be a great support during the pandemic. We went beyond our standard frameworks and launched something completely new . As a result, we got many new creative ideas along the way and had a lot of fun filming. We learned that it is important to think outside the box and try new ways of doing old things. That’s why, for us, videos became and will stay a crucial part of our communication. Videos hold the power of replacing face-to-face interactions, capture company culture, keep lingo and jokes flowing, and make people feel connected and engaged. And if that means no more long, boring texts no one reads, who are we to complain! 😉 If we have intrigued you so far to follow us along with your favorite YouTubers, you can have a look and follow us at the following link: Q YouTube . Marta Juricic She is a marketing and PR enthusiast responsible for developing, implementing, and executing strategic marketing plans. Classy girl with a bit of hood in her, and an attitude which she loses when there’s a dog nearby. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 1, 2021 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 1, 2021 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How to Transition From Swift to Flutter - Tech Consulting and Software Engineering URL: https://q.agency/blog/how_to_transition_from-swift-to-flutter/ Compare Swift and Flutter across architecture, UI/UX, documentation, development, and maintenance, and learn what to expect when transitioning from native iOS to cross-platform development. How to Transition From Swift to Flutter | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How to Transition From Swift to Flutter How to Transition From Swift to Flutter March 17, 2021 — 8 min read In this short story, I will describe what were the easiest and the most challenging dierences when transferring from Swift to Flutter. Cross-platform tools for mobile development have been a holy grail for a very long time now. But, it is not easy, and there have been many contenders. Personally, I’ve been close to using React Native and even tried Xamarin; however, from what I’ve heard, they have both been struggling with bugs and missing features. Selecting a cross-platform tool for a bigger project can also be risky as it is a huge buy-in to an ecosystem that has to survive the app’s lifetime. Will the tools be around? Can one find developers in the future when the app inevitably needs to be upgraded? We will go through a few points such as: Architectures UI/UX Documentation Development & Maintenance Let’s jump right into it! Architectures While native iOS apps use architectures such as MVC, MVVM, Viper, etc., Flutter uses a pattern called BLoC. Many developers think that BLoC is pretty much the same thing as MVVM, but in reality, they are not quite the same… MVVM implies data bindings between the view and the view model, which means that the view objects are mostly the ones commanding the view model. MVVM seems to be a simplification of MVC to show the model “as is” behind the scenes. For example, Xamarin largely uses MVVM, and the controls on the screen like checkboxes, text input, etc., all do modify the model view behind the scenes. You may already start to see a problem here. If you change the UI, you may have to change the MV as well. Suppose you have an entry number that must be between 0–255; where do you put this logic? Well, on MVVM, you put this logic on the view. But you must put these locks on the model view as well to guarantee data safety. That means a lot of code rewriting to do the same thing. If you decide to change this range, you have to change it in two places, making your code more prone to errors. There are workarounds for this, but it is far more complicated than it should be. On the other hand, BLoC works by receiving events and emitting states. It doesn’t care (although it may) from where the event came from. Using the same example from the above, the view would signal an event to the bloc/controller with “hey, my number changed!”, the bloc then would process this new event and, if suitable, emit a signal to the UI: “hey UI! You should change! I have a new state for you!”. Then, the UI rebuilds itself to present those changes. For me, the advantage of BLoC over MVVM is that BLoC can entirely decouple the business logic from the view, which is overall a better way to do things. As our modern software development requires more and more UI changes (being dierent screen sizes, densities, platforms, etc.), having the UI side decoupled from the models is a fantastic feature to code reusability. UI/UX Xcode has multiple ways of configuring UI in your app. The most popular way is through Storyboard. Storyboard allows you to drag-&-drop a specific UI element on your UIViewController and position using Auto Layout and constraints. I won’t go into details, but you can read more here. You can also create your UI just by using code. For example, using UIStackView is a great way of doing it, and it’s also similar to Flutter in some way. When using stack views, you can specify which axis will the stack view use (vertical or horizontal). You can place elements that you need along the axis inside the stack view (for example, button, label, or some custom UI element). Of course, there are much more parameters that you can use to display your UI elements inside the stack view (distribution, alignment, spacing, etc.), but I won’t go into details. Flutter uses widgets that are built using a modern framework that takes inspiration from React . The central idea is that you build your UI out of widgets. Widgets describe what their view should look like given their current configuration and state. When a widget’s state changes, the widget rebuilds its description. The framework dis against the previous description to determine the minimal changes needed in the underlying render tree to transition from one state to the next. There are a few basic widgets: Text The text widget lets you create a run of styled text within your application. Row/Column These flex widgets let you create flexible layouts in both the horizontal (Row) and vertical (Column) directions. The design of these objects is based on the web’s flexbox layout model. Stack Instead of being linearly oriented (either horizontally or vertically), a Stack widget lets you place widgets on top of each other in paint order. You can then use the Positioned widget on children of a Stack to position them relative to the top, right, bottom, or left edge of the stack. Stacks are based on the web’s absolute positioning layout model. Container The container widget lets you create a rectangular visual element. A container can be decorated with a BoxDecoration, such as a background, a border, or a shadow. A Container can also have margins, padding, and constraints applied to its size. In addition, a Container can be transformed into a three-dimensional space using a matrix. This is most likely the hardest part of the transition for many developers such as myself. Building UI in Xcode is crazy simple, and once you get the hang of it, it’s as easy as working an assembly line. On the other hand, I feel that Flutter’s UI is diicult to handle because there is a lot of code, but maybe it’s just the lack of experience. If this sounds interesting and you wish to go into more details about widgets, navigation, animations, etc., here is a link . Documentation When it comes to documentation, Apple provided all the details about almost everything. In my opinion, some of it may seem not very clear, so you may want to read the same article twice. Apple also has a WWDC (Worldwide Developer Conference), which takes place every year in June. During the event, Apple explains new technologies that they develop in a pretty detailed description which, again, in my opinion, are fantastic, and explanations are more apparent than the one in the documentation provided on the oicial Apple site. Overall, Apple does a fantastic job explaining its technology and provides more than enough info for beginners to learn and start coding themselves. Flutter comes close to Apple with its documentation, unlike Xamarin or React Native, where I feel like a lot is missing. Developers need to search the web for more info regarding a specific question, which usually results in slower development. Flutter does a great job providing all the information you need. Flutter uses Dart as a programing language, so there are two sites that you can visit if you have any questions ( https://dart.dev/guides and https://flutter.dev/docs ) If you can’t find the answer that you are looking for in some cases, there is no need to panic. Flutter is a trendy framework. Because of its popularity that has been going crazy lately, there are already many forums with all kinds of questions being asked and answered. If you can’t find the answer even then, ask a question on StackOverflow or similar websites. You will get an answer very quickly. Overall, both Apple and Flutter provide their developers with all the info they need to start coding, or if they are experienced, to learn new things and upgrade to the next level. Development & Maintenance Now, the big question that most clients will ask. What is more cost-eective? With no hesitation, the short answer is Flutter. While native apps need two codebases, Flutter requires just one. The cost of development is lower, time of development shorter, and end-product more eicient. For example, let’s say that you need to develop a simple radio app. To cover both platforms with native apps (iOS and Andriod), you will most likely need 3 developers, one for the backend, one for iOS, and Andriod. With Flutter, you will need 2 developers, one for the backend and one for both apps. That being said, in this example, your radio project will cost 25–30% less, and it will be ready for the end-users sooner. When it comes to maintenance, Flutter wins again since there is just one codebase. The cost of maintenance in some situations could be half the cost for native apps. For bigger and more complex projects, the development cost may not be 25–30%, but it will surely be cheaper to develop. Keep in mind that Flutter is a pretty new technology that is being upgraded every day and may lack some advanced frameworks, for example, 3D scanning of objects. When it comes to end-users, there is no need to worry about their experience because 99% of them won’t even notice that they are using a hybrid app and not a native one. The finished product is built dierently when it comes to native and hybrid apps, using dierent architecture and UI elements, but the result is the same. The performance dierence is close to zero; you can’t really notice that loading an image took 50 milliseconds for a hybrid app and 45 milliseconds for a native one. The hardware that we have in our phones and tablets today is more than enough to run apps that we use in everyday lives. Filip Varda He pays attention to the smallest details and makes sure our mobile applications work. If you need to talk about the newest mobile trends or gadgets, he’s the guy to go to. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 17, 2021 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 17, 2021 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Fast is easy. Provable is the product. - Tech Consulting and Software Engineering URL: https://q.agency/blog/human-agent-pods-fast-is-easy-provable-is-the-product/ IDE copilots govern access, not work. Human-Agent Pods run AI in a governed harness where a named human signs every artefact. Part 1 of 2 from Q. Fast is easy. Provable is the product. | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Fast is easy. Provable is the product. Fast is easy. Provable is the product. August 19, 2026 — 19 min read Why we run AI delivery in Human-Agent Pods: headless agents, deterministic quality gates, and a named human signing every artefact. Somewhere in your delivery organisation, right now, an engineer is pasting part of your codebase into a model you did not choose, under terms you have not read. Perhaps you have governed this. Enterprise Copilot seats, an allow-listed model, a network proxy, DLP rules, usage telemetry. We concede all of it; it is real work and it matters. It is also governance of the wrong object. Those controls govern access to the tool. They cannot tell you which model touched which artefact, what data crossed the boundary on a given task, what quality bar the output cleared, or who signed the result. They govern the tool. They do not govern the work. That is why we hold that a copilot inside an engineer’s IDE is ungovernable by construction: governance that depends on a developer choosing to comply is not governance . Our answer was to move the AI off the engineer’s desk, into a governed harness that runs only approved tools and models, and to move the humans up to the gate, where their job is to decide and answer for the work rather than to type it. We call the resulting unit a Human-Agent Pod . This piece explains what one is and shows you a production agent in enough detail to judge. A pod is people who sign, paired with agents that produce A Human-Agent Pod is a delivery team in which every AI agent is paired with a named, accountable human, running a spec-first SDLC under a control plane we call AI PodOps. The agents produce artefacts. The humans apply expertise to judgment: they steer, they decide, and they sign. Nothing proceeds without that signature. We run pods in two shapes. A mirrored pod pairs one agent with one specialist : BA, solution architect, PM, fullstack developer, UX/UI designer and QA, each with their own agent. That buys dual control, different signatories at every stage, parallel execution and a complete audit trail, which is why we point mirrored pods at regulated sectors: banking, insurance, healthcare, the public sector. A compressed pod puts one senior generalist over two or three agents : a tech lead over the SA and backend developer agents, or a senior BA/QA lead over the BA, PM and QA agents. Lower day rate, faster handoffs, one person holding the whole picture. That shape fits MVPs and internal tools. Across both shapes, our commercial model targets up to 40% lower blended cost than the equivalent all-human team at the same scope. We say “targets” deliberately: that is a claim about the pod model, not a measured average, and the audit trail is what lets a client hold us to it. One rule is absolute: one agent, one accountable human. If you run delivery on RACI, read the pod as a deliberate rewrite of one letter. Responsible moves to the agent: it produces the artefact, escalates when it is blocked, and reaches out when it needs a decision. Accountable stays with the human: they judge, they sign, and they answer for the work by name. Accountable never moves. In our staffing view, an agent without an assigned human is not an efficiency gain. It renders as uncovered risk, in the same red as an unfilled seat. Where this sits in a crowded market If you are evaluating AI delivery in 2026, you are being offered one of three things, and all three are legitimate. They are just not this. The platform suites (GitHub’s Agent HQ, ServiceNow’s AI Control Tower, Atlassian’s Rovo) govern agents against their own operating surface, and that governance is real; two of the three now reach third-party agents, and we will not pretend otherwise. Their anchor is still the platform: the repository, the CMDB, the suite. What none of them holds is the delivery workflow itself: the chain from spec to release, a deterministic quality bar at each stage, and a named human signing each artefact, wherever the work happens to run. The autonomous coders (Devin, the Cursor agent family) sell capability, by now with serious enterprise trimmings: SOC 2 attestations, access controls, audit APIs. But what their logs record is who ran an agent and when, not which approved spec a change traces to, which deterministic checks it cleared, or which named human answered for it at a gate. The operating model is delegation to autonomy, run by an engineer, and a non-engineer can neither operate the work nor reconstruct it as evidence. The frontier labs sell enterprise capability deals: excellent tooling for a company that wants its own engineering org to move faster, where the client still runs it, governs it, staffs it and answers for it. A pod is the fourth thing: a cross-tool agent-human team under one harness, operable by a non-engineer . We govern the pod across the tools it touches and keep the delivery evidence: a system of record for AI delivery governance. Which also means the frontier labs are our suppliers, not our competitors. The platform is model-agnostic by design : agents are swappable by contract, every agent’s model plane is disclosed, and local models can run inside the client’s tenant. The labs sell the engine; we show up with the car, the driver, and the insurance, and we buy engines from whoever makes the best one. The honest boundary runs the other way too: if what you want is your own engineering org moving faster, buy the lab deal. A pod is for buying delivered outcomes with proof attached. The chain is the dependency graph Every pod runs the same artefact chain : spec, design, UX/UI spec, tasks, code, review, test, release, with a Knowledge Base agent running pod-wide beside the chain rather than inside it. Each stage consumes the artefact before it and produces the artefact after it, and that produces-to-consumes relation is not documentation of a process. It is the process: the dependency graph the platform executes. Two properties fall out of taking the graph seriously. Entry is always the chain’s first node. Every confirmed piece of work lands at the BA, so every downstream artefact traces back to a spec. When a client arrives with a spec of their own, the BA agent adopts it: ingests it, runs the validators against it, conforms it to the template or flags the gaps . The author becomes the inspector, and traceability starts in the same place either way. Rework travels the chain. When QA fails a build because the design was wrong, the rejection targets the design stage, the root cause, and not merely the developer one step back. Because produces-to-consumes is the dependency graph, everything downstream of a corrected artefact is stale by definition and re-runs forward; no human has to remember what a corrected design invalidated. Compare a human team, where a corrected design document quietly coexists with code built on the old one until an integration test, or a customer, finds the seam. The economics view attributes the rework cost to the stage that caused it, and repeated bounces escalate to the accountable human in Slack. One project, one memory, and an agent that owns it The Knowledge Base agent is the pod’s cornerstone, and it is mandatory in every pod rather than a toggle a client can switch off. It holds the project’s truth: legal and contractual constraints, decisions with their rationale, open conflicts, the glossary and domain sources, task context. Every agent and every human draws on the same context, visibly and auditably. That shared memory is the difference between a pod and six chatbots, each hallucinating its own version of the project. It is a curator, not a bucket. The memory is organised as a knowledge graph, with Graphiti as the cornerstone of how the data is structured, and it connects to wherever a project’s truth actually lives: email, Google Drive, Notion, Slack, Teams, HubSpot, Teamwork, Jira, and any other source a project uses to collect and manage information. As it ingests, it curates. And when two sources contradict each other on something it cannot resolve itself, it does what every agent in the pod does with a decision above its pay grade: it escalates to a human, who decides which claim becomes the project’s truth. Even the memory has a gate. The consequence a delivery lead feels first: the statement of work lives in that shared context as a source of truth, and produced work is checked against it, with deviations flagged. “Is this a bug or a change request?” stops being a negotiation between a PM and a client and becomes a lookup with a citation. On fixed-price work, that single property can be worth more than the delivery speed. The honest limit: the pod knows only what it has been given. Ingestion scope, redaction, and the client’s right to ask “what does it know, and can I remove this?” are operational questions we design for, not footnotes. Anatomy of a real agent: our BA Diagrams are cheap. So here is one of our agents in production, in enough detail to judge whether this is engineering or a slide. The BA agent is Python 3.12, FastAPI and LangGraph . A ReAct supervisor is the single entry point; the spec-writing pipeline is a tool the supervisor calls, never invoked directly. Work arrives when a ticket moves into the agreed column in the client’s tracker, Jira or Teamwork, which fires a webhook to the agent’s trigger endpoint, fire-and-forget, and the supervisor loop starts in the background. From there, the supervisor can search the tracker task with its comments and attachments, search a pgvector project memory of domain knowledge and past spec patterns, write the spec, run a consistency check of the draft against every previously approved spec (data models, APIs, business rules, terminology), share the draft in Slack, wait for a reply, and record approval, with its Slack tools loaded dynamically over MCP. The pipeline itself is a bounded loop: generate, evaluate, route, then at most two refinement turns. It runs under a ten-minute timeout and a five-dollar hard cost cap per run, and the best spec across turns is tracked and restored if the final turn regresses. Now the part we most want you to understand: the evaluate node makes zero LLM calls. The spec is graded by eight structural validators, token-level checks over ids, counts, set equality and presence. One is representative: it checks that the set of AC-NNN acceptance-criterion ids in the plain-language section exactly equals the set in the EARS technical section, which catches orphaned criteria on either side. Another enforces EARS syntax on the acceptance criteria themselves (“When”, “While”, “Where”, “The system shall”) and fails the run below 80% coverage. A third checks that every low-confidence decision in the decision log carries a substantive rationale, at least twenty characters and not a TBD. The other five are the same species: presence, parity and duplicate checks over sections, ids and message codes. On top sit six completeness scores (user roles, business rules, acceptance criteria, scope boundaries, error handling, data model), starting at 95 and capped down by failed validators; a run passes only when all six hold at 80 or above . Why insist on a deterministic grader? Because a model evaluating a model tells you what a model thinks, and the design premise of the whole system is that the AI does not grade its own homework. But be clear about what the validators prove: that a spec is well-formed, not that it is correct. A spec can pass all eight checks and still describe the wrong product. Structural quality is machine-checkable; semantic truth is not. That is exactly why a human still signs it. The signature is engineered too. When the agent needs a clarification, it calls LangGraph’s interrupt() and the graph stops; a Slack Events webhook resumes it with the stakeholder’s reply. Approval is bound to an authorised Slack user id configured per project, not to whoever answers fastest. Every spec version is stored with its scores and its source (generated, refined or manually edited), diffs between versions are viewable, and the decision log surfaces a low-confidence count so the reviewing BA knows how many assumptions to probe. By our own run telemetry, a production spec run costs roughly $0.08 to $0.17 in model spend. Put that next to a human afternoon. And the unglamorous edge is engineered as well: post-approval chores (move the tracker column, post the comment, upload the spec file) run with retries and a dead-letter queue, because integrations, not reasoning, are where agent systems actually die. Taking implementation headless The BA proves the pattern. Implementation is where the thesis bites, because implementation is where copilots live today. Our Developer and QA agents run the same way: Claude Code in headless mode, on our own server. No IDE, no engineer’s laptop, no personal account. A harness we control, running only the tools and models we have approved, on infrastructure where data residency is a configuration rather than a hope. Today the runner draws on a Claude subscription rather than per-token API metering, which changes the economics of iteration: the marginal cost of another implementation attempt is predictable instead of a variable that punishes rework. We hold that arrangement honestly. Headless mode is an officially supported way to run Claude Code ; every seat belongs to one accountable human; and Anthropic has signalled that heavily shared production automation belongs on API billing, so we treat the current pricing as a commercial term that can change, not a structural advantage. If the meter changes, the meter changes. The harness and the governance around it do not. The harness is not married to a single engine, either. Claude Code can be pointed at local models running on our own H200 cluster, large open-weight models such as Qwen or DeepSeek, where a client’s data must never leave the tenant or where the economics favour it. That works better than it might sound, and the chain explains why: by the time implementation starts, the hard thinking has already been done and signed upstream, in the spec, the architecture and the task breakdown. The runner receives a small, micromanaged context per task, so the model executing it does not need to be the strongest one on the market. Most of the intelligence in the system lives in the artefacts, not in the model of the week. The runner does not read the ticket. It reads the chain: the approved SPEC.md , ARCHITECTURE.md , UIX-UI-SPEC.md and TASKS.md , the project CONSTITUTION.md (stack, coding, testing, API and security standards, and the quality-gate commands), and the Knowledge Base agent’s shared context. That is the complete brief, and it exists because every upstream stage was gated. For visual work, web or mobile, one more gate runs before a single line of code. Our own Figma MCP takes the wireframe, produces a rendering of the feature without writing the code, compares the rendering against the Figma design, and escalates if the match is not 100%. Development does not start until it is, because we know where the time actually goes: fine-tuning the last 5% of a UI after the code exists is how implementation becomes the bottleneck. We settle the pixels before the first commit. Execution runs in three phases . Plan: decompose the work against TASKS.md and isolate it in a git worktree. Implement: test-driven development as an iron law, per task, red then green then refactor, and code written before its test is deleted. Before anything is offered for review, a blocking checklist must pass: suite green, lint clean, coverage met, scope integrity intact. Review: a code-review pass that is forbidden from approving without reading the code and running the tests, with bounded auto-fix attempts before it must escalate to a human. What comes back is not a chat transcript. It is artefacts: an IMPLEMENTATION-SUMMARY.md , a REVIEW.md , a branch and a pull request. Those artefacts are what the human gate reviews and what the ledger records. The QA agent works the same way, one layer up. Under the hood it drives Playwright; over it sits our harness. Test automation usually dies on its inputs: vague acceptance criteria and undocumented flows. Here the inputs are the chain itself: EARS acceptance criteria, the UX/UI spec, the implementation summary, each validated and signed before QA ever runs. We are automating the automation, with artefacts prepared for exactly that. One deliberate inversion is worth explaining. The spec gate lives in the platform, because a PM should never be dropped into engineering tooling to do their core job. The code gate is the GitHub PR review itself, because engineers review code in GitHub and moving them anywhere else would be theatre. The webhook resolves the gate; the platform records it. Meet each persona where they already work. Provenance lives in the repository, and not only on a dashboard. The Dev agent commits under a bot identity with signed commits and a Co-authored-by: line naming the accountable human, and every PR carries a contract in its description: the spec link, the gate id, the validator summary. Six months from now, git blame answers the question your auditor will ask. Where the human actually sits Lift the human out of the IDE and their job changes shape. It stops being production and becomes judgment: reading what the agent produced, applying their expertise, deciding, and answering for the decision. The pod is built so that the job happens where people already work. Agents reach humans in Slack, proactively. Clarifications, approval gates and escalations arrive as messages, and people answer them the way they answer a colleague. The dashboard is optional depth, one deep link from any message to the exact decision, never a required habit, because a gate that only exists on a dashboard nobody opens is not a gate. Approval authority is bound to configured user ids rather than to whoever replies first, and every message in either direction lands in the audit trail. Here is what a gate actually looks like. At 09:12 the BA agent hits an ambiguity in a payment flow, calls interrupt() , and stops. A Slack message reaches the accountable BA: the draft spec, the low-confidence count, the specific question. They read for four minutes and reject with a typed reason: “refund path contradicts BR-014; confirm with the client before AC-031 stands.” The graph resumes with their answer. The ledger records the spec version, the validator results, the reason and their user id. That is the entire ceremony, and it is also the entire audit story. Typed reasons are required on every rejection and every override. Clean approvals offer structured quick-reason chips instead, so the ledger never fills with forty rows of “Looks good.” Autonomy is earned, never assumed. The ladder runs from L0 (review everything) through batch review and one-in-five sampling to auto-clearing low-risk items, and promotion criteria are deterministic validator streaks. The system proposes, with evidence of the form “BA eligible for L2: 47 consecutive 8/8 specs, 4% rejection rate”; the accountable human grants; the ledger records. Downgrade is free; upgrade is gated. Autonomy you can audit your way into. And because agents run around the clock while people do not, human capacity is modelled as a first-class object: working hours, out-of-office status, named delegates, gates-per-day capacity, a coverage timeline where an uncovered hour flags the same red as an unstaffed agent, and an intake throttle that pauses upstream work when someone’s open-gate queue exceeds their capacity. Coverage is accepted with a one-tap audited acknowledgement. It is never silently assigned. Proven where it counts None of this is a concept deck. The BA agent runs in production federation, with real runs, real gates and real health reporting behind the numbers in this piece. The Knowledge Base agent and the append-only audit ledger operate alongside it. The Spec-First workflow that disciplines the whole chain, six gated steps and eleven mandatory artefact templates, is in daily use on client and internal projects across Cursor, Claude Code, OpenCode and Codex. The pattern you have just read is the pattern we run. Nor is it a pivot. Q has delivered full-team SDLC engagements for years: whole teams, spec to release, under one roof. The pod is a multiplier on that muscle, not a replacement for it, and the chance to run delivery the way we always wanted to: gated, traceable, provable at every step. One limit we will state ourselves, because it is the reason the model has humans in it at all: structural validation cannot catch a spec that is well-formed and wrong. We narrow that gap with a semantic layer on top of the deterministic one: LLM-driven consistency checks that compare each new spec against everything already approved and flag duplicated work, overlaps and contradictions as warnings and guidance while the spec is being generated. But warnings advise; they do not decide. Only the person at the gate signs. That is not a gap in the system. It is the job description. “Show me” Every serious conversation about AI delivery eventually arrives at the same request: not “how fast,” but “show me.” A copilot cannot answer it, because the evidence never existed. A pod answers it by construction, because the evidence is a by-product of how the work moves. Not an autonomous coder you must trust: a governed agent-human pipeline you can prove . Part 2 takes the harder half of the question: what it means to launch, run, and recover a pod on a real engagement , around the clock, with a non-engineer on coverage. The central dashboard, the AgentOps underneath, incidents and recovery, the economics, and the regulatory evidence a client can hand to their auditor. Zlatko Matokanovic Q's Director of AI Research and Development has over 11 years of experience in mobile development, mainly in iOS. Sharpening his organizational and people skills while leading a new vertical at Q are his forte, and when not working, Zlatko loves to play drums, tinker with IoT, do crossfit, and try to make every day interesting for his two young sons. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 19, 2026 — 19 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 19, 2026 — 19 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path befo [truncated] ======================================================================== # “I want a job? I’ll get the job!” - Tech Consulting and Software Engineering URL: https://q.agency/blog/i-want-a-job-ill-get-the-job/ Learn how to stand out in the job application process with practical tips on CVs, motivation letters, interviews, and making a strong first impression. “I want a job? I’ll get the job!” | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > “I want a job? I’ll get the job!” “I want a job? I’ll get the job!” March 12, 2019 — 2 min read Our psychologist and HR expert Kristina Milković Čilić visited students at Zagreb University of Applied Sciences to share trends of the selection process in Croatia and globally. Students learned tips and tricks for how to impress potential employers and had the opportunity to put the new knowledge to the test through a simulated job interview. Kristina covered the dierent aspects of the job application process and the importance of creating a strong CV that will catch the attention of future employers. The workshop focused on the interviewing process, from the vacancy announcement to the final recruitment. Special attention was given to the preparation of a CV and motivation letter, everything from tips on what type of language to use to what information should definitely be excluded (e.g. your favorite food, kindergarten awards, or an inappropriate personal email address ;)). Just as important as a good CV and motivation letter is the first impression. Kristina led the students through simulated interview situations to practice the do’s and don’ts of how to behave during a job interview. Students had the chance to practice making a good first impression in order to woo potential employers. Kristina’s parting advice for the students was to be conscious of body language, speak clearly and confidently, and always prep before attending an interview. Thanks to teacher Biljana Stojaković for organizing this, to the university for welcoming us and the students for their attention. 🙂 We loved getting to meet with the students and learn about their experiences and interests. We were happy to host some of the students at our Q oice for additional coaching and we are hopeful that some of them will have their first job experiences with us. Ljubica Duric GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 12, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 12, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # If you can laugh together, you can work together - Tech Consulting and Software Engineering URL: https://q.agency/blog/if-you-can-laugh-together-you-can-work-together/ Discover how humour, team spirit, and shared experiences help Qumans build stronger relationships and create a better workplace culture. If you can laugh together, you can work together | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > If you can laugh together, you can work together If you can laugh together, you can work together January 30, 2019 — 1 min read Even the best product or most innovative business plan doesn’t mean anything if there aren’t great people behind it. Employees are the heart of every company, and investing in team-building exercises enhances their roles and connections. These occasions oer a break from the day-to-day routine and allow people to interact with each other in a casual and relaxed setting That day we went to refresh and rejuvenate our minds and let the stress go away and the ideas come into play. 🙂 We’re completely dierent and yet we work together every day. Some of us need quiet to do their job, some use music to get in the mood. Some come to work early in the morning, while others prefer to get more sleep. We do our job in the most eective way for us. But what’s essential is that we all share one goal. And we work on it from one place. The place where the magic happens. 🙂 Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 30, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 30, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Implementing Strategy Pattern with Symfony - Tech Consulting and Software Engineering URL: https://q.agency/blog/implementing-strategy-pattern-with-symfony-showcase/ Learn how to implement the strategy pattern in Symfony. Improve code flexibility, scalability, and maintainability with practical examples and best practices. Implementing Strategy Pattern with Symfony | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Implementing Strategy Pattern with Symfony Implementing Strategy Pattern with Symfony August 14, 2025 — 7 min read The strategy design pattern is a behavioral software design pattern that lets you define a family of algorithms, encapsulate them, and select one from the pool for use during runtime. The algorithms are mutually substitutable. By using design patterns, you can make your code more flexible, reusable, and maintainable. In this blog, I will show how to use strategy design pattern on Symfony by real-world case. Symfony is one of the most popular PHP web application frameworks and it is widely represented in our company. UML class diagram for the strategy design pattern In the above UML( Unified Modeling Language ) class diagram, the Context class defines the interface of interest to clients, maintains a reference to one of the Strategy objects and works with this object only via the Strategy interface. The Strategy interface is used by Context to call an algorithm defined by the concrete strategies which make Context independent of how an algorithm is implemented. The concrete strategy classes implement the Strategy interface (encapsulate an algorithm). Requirements To not install any additional packages, I will run and test our code in a console application. Run this command to create a new Symfony application. composer create-project symfony/skeleton my_project_name I will cover code with few unit tests, so you can install the newest phpunit (it requires PHP >= 7.3): composer require --dev phpunit/phpunit ^9 Subject Let’s say that you have an application where you want to add a new feature: enable users to add their social networks. You would implement a screen where the user can enter the URL of his social network account and then hit the Save button. If everything goes well, a new social network would appear on the user’s profile page with logo, type and URL. The list of user’s social networks In this blog, I will not implement either the UI components or the web controller . I will focus on a service that determines the type of social network based on the provided URL. To keep this example lite, the service will be called from a CLI command ( that command imitates the controller). I will also add unit tests for the service so I can be sure that it won’t break anything after refactoring. First Solution Service supports the following social networks: Facebook , LinkedIn and Twitter . For each social network you have (else)if statement which tries to match a URL with a specific pattern and if a match is successful, it returns the type of social network. You can see one if condition, regex pattern and hard-coded return value per social network. class SocialUrlParser {     public function getType(string $url): string     {         if (preg_match('/(?:(?:http|https)://)?(?:www.)?facebook.com/', $url)) {             $type = 'facebook';         } elseif (preg_match('/(?:(?:http|https)://)?(?:www.)?linkedin.com/', $url)) {             $type = 'linkedin';         } elseif (preg_match('/(?:(?:http|https)://)?(?:www.)?twitter.com/', $url)) {             $type = 'twitter';         } else {             throw new RuntimeException('invalid_social_network_url');         }         return $type;     } } The command which uses the service is pretty simple: it takes the URL as an argument, delegates work to the service and prints social network type (if it is determined). class DetermineSocialNetworkCommand extends Command {     protected static $defaultName = 'app:determine-social-network';     private $socialUrlParser;     public function __construct(SocialUrlParser $socialUrlParser)     {         parent::__construct();         $this->socialUrlParser = $socialUrlParser;     }     protected function configure(): void     {         $this             ->setDescription('Determines a social network based on entered URL.')             ->addArgument('url', InputArgument::REQUIRED)         ;     }     protected function execute(InputInterface $input, OutputInterface $output): int     {         $url = $input->getArgument('url');         $type = $this->socialUrlParser->getType($url);         $output->writeln($type);         return Command::SUCCESS;     } } Output of the command And here is the test class. You can see two tests, one covers all supported types and the other covers cases when you don’t have a URL match. For the first test, use a cool thing called data provider . final class SocialUrlParserTest extends TestCase {     /**      * @dataProvider socialNetworkProvider      */     public function testItReturnsCorrectType(string $url, ?string $expectedType): void     {         $parser = new SocialUrlParser();         $this->assertSame($expectedType, $parser->getType($url));     }     public function testItThrowsExceptionForInvalidUrl(): void     {         $parser = new SocialUrlParser();         $this->expectException(RuntimeException::class);         $this->expectExceptionMessage('invalid_social_network_url');         $parser->getType('https://q.agency');     }     public function socialNetworkProvider(): array     {         return [             ['https://www.facebook.com/teste...', 'facebook'],             ['https://www.linkedin.com/in/te...', 'linkedin'],             ['https://twitter.com/tester', 'twitter'],         ];     } } Let’s run tests. Result: all tests passed Although the service does its work I am not quite satisfied. I don’t like those if-else blocks, hard-coded regex patterns and return values. Service knows about the details of each social network and every time a new social network is added, you need to change the service and make it bigger and messier with an extra “elseif” block. Let’s improve service with the use of a strategy design pattern. Using Strategy First, let’s define the Strategy interface. getRegexRule() method will provide a regex pattern specific to a particular social network, while getName() returns a type of social network. interface SocialNetworkRule {     public function getRegexRule(): string;     public function getName(): string; } Then you have concrete strategies: one class per social network. Here is an example for “Facebook”. final class Facebook implements SocialNetworkRule {     public const NAME = 'facebook';     public function getRegexRule(): string     {         return '/(?:(?:http|https)://)?(?:www.)?facebook.com/';     }     public function getName(): string     {         return self::NAME;     } } You can add classes for other social networks in the same way – they only differ in the regex pattern and the value of the NAME constant. Now refactor the SocialUrlParser service (the Context class in terms of the design pattern): final class SocialUrlParser {     private $socialNetworks = [];     public function setSocialNetworks(SocialNetworkRule ...$socialNetworks): void     {         $this->socialNetworks = $socialNetworks;     }     public function getType(string $url): string     {         /** @var SocialNetworkRule $socialNetwork */         foreach ($this->socialNetworks as $socialNetwork) {             $regex = $socialNetwork->getRegexRule();             if (preg_match($regex, $url)) {                 return $socialNetwork->getName();             }         }         throw new RuntimeException('invalid_social_network_url');     } } The Context provides a setter and a way to choose one of the concrete strategies based on a match between their regex pattern and given URL. After that, work is delegated to the Strategy object: Let’s add following code into services.yaml file: AppServiceSocialUrlParser:         calls:             - method: setSocialNetworks               arguments:                   - '@AppServiceFacebook'                   - '@AppServiceTwitter'                   - '@AppServiceLinkedin' You can use setter injection to inject concrete strategies into our Context class. The good news is that you don’t need to change our command. Let’s check if it works. Output of the command is the same as before Now re-run tests. Result – failed tests Oops, three tests failed. It is because I didn’t inject any strategy into SocialUrlParser (socialNetworks property is an empty array). Let’s fix that: final class SocialUrlParserTest extends TestCase {     /**      * @dataProvider socialNetworkProvider      */     public function testItReturnsCorrectType(string $url, ?string $expectedType): void     {         $parser = new SocialUrlParser();         $socialNetworks = [             new Facebook(),             new Linkedin(),             new Twitter(),         ];         $parser->setSocialNetworks(...$socialNetworks);         $this->assertSame($expectedType, $parser->getType($url));     }     public function testItThrowsExceptionForInvalidUrl(): void     {         $parser = new SocialUrlParser();         $socialNetworks = [             new Facebook(),             new Linkedin(),             new Twitter(),         ];         $parser->setSocialNetworks(...$socialNetworks);         $this->expectException(RuntimeException::class);         $this->expectExceptionMessage('invalid_social_network_url');         $parser->getType('https://q.agency');     }     public function socialNetworkProvider(): array     {         return [             ['https://www.facebook.com/teste...', Facebook::NAME],             ['https://www.linkedin.com/in/te...', Linkedin::NAME],             ['https://twitter.com/tester', Twitter::NAME],         ];     } } Result – now all tests are “green” again Final Words Concrete strategies in this example are not so complex (they only return a type of social network) but you could have different variants of an algorithm where each of them requires a couple of specific services and without using a strategy pattern you would probably end up with one huge service with a lot of dependencies. Any change to one of the algorithms would affect that service, increasing the chance of creating bugs. In such a case, I would recommend thinking about the strategy pattern. Matija Cerovec Matija is Backend Software Developer at Q agency. If you have a challenge, give it to him. While he’s working he listens to music from the 60-s and 80-s which is an inspiration for legible and extendable codes. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 14, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 14, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # In-House vs Outsourcing Software Development. What’s Best for Your Business? - Tech Consulting and Software Engineering URL: https://q.agency/blog/in-house-vs-outsourcing-software-development/ In-house vs outsourcing software development. What’s best for your growing business? Check out this article and find out. In-House vs Outsourcing Software Development. What’s Best for Your Business? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > In-House vs Outsourcing Software Development. What’s Best for Your Business? In-House vs Outsourcing Software Development. What’s Best for Your Business? March 10, 2026 — 9 min read Your business isn’t technology. Maybe you’re in manufacturing, logistics, finance, healthcare, energy, or retail. You’re world-class at what you do — moving products, managing assets, serving customers, delivering results. But somewhere along the way, software stopped being optional . It became oxygen. You need platforms to optimise operations, systems to track performance, dashboards to make decisions, and integrations to connect everything. Software has gone from “nice to have” to “we can’t function without it.” So you face a choice: in-house vs outsourcing software development through a specialised partner. Most companies default to hiring. It feels logical. Bring expertise in-house, maintain control, build institutional knowledge. But here’s what they don’t consider: running a software engineering function is a completely different business than running your core operation. When Software Becomes Core — But Isn’t Your Core Business Let me give you a real example. We work with one of the world’s leading workforce solutions companies. Their expertise? Recruitment and talent assessment. They’ve been doing it for decades, and they’re exceptional at it. But in today’s world, recruitment isn’t just about identifying talent . It’s about having the right technology to assess, match, and place candidates at scale. So they needed a sophisticated psychological testing and assessment platform (Construct) that could be used in recruitment processes worldwide. They faced a decision: build an internal IT team to develop and maintain this mission-critical software, or partner with a specialised software engineering company. They chose to partner with Q. Why? Because even though software had become central to their recruitment process, building and managing a world-class software engineering team would have meant building a second business inside their first one. They are brilliant at recruitment. They understand candidate psychology, labour market dynamics, and organisational needs better than anyone. But hiring React developers? Managing DevOps infrastructure? Building competency frameworks for software engineers? That’s a completely different game. By partnering with us and outsourcing software development, they got: A dedicated team that understands their domain and business requirements Access to specialised expertise across multiple technologies Scalability to ramp up or down based on project needs Continuity, even when individual engineers move between projects Best practices from a company that builds software for dozens of clients simultaneously And the final result is? A platform that serves their global operations, built and maintained by people who live and breathe software engineering, while our partner stays focused on what they do best. This is the model that works. Not because outsourcing is always better, but because trying to build a parallel software engineering business inside your core business dilutes both. We have the same experience with companies in Oil and Gas, Media and Publishing, Pharmaceutical, and Hospitality, and this approach is applicable for all industries that aren’t in their core software engineering industries. Honest Recommendation: Keep a Small Core, Outsource the Rest It’s no secret that running a competitive software engineering team is demanding, and that most non-tech companies struggle with it . After seeing hundreds of companies struggle with this decision, here’s what works when deciding between in-house vs outsourcing software development: Build a small, internal IT core team . Often just 1-2 people who: Deeply understand your business and industry Set technical strategy aligned with business goals Act as the bridge between operations and engineering Own the relationship with your technology partners Make build vs. buy decisions Function as Product Owner or Product Manager You don’t need a CTO, VP of Engineering, or elaborate technical leadership structure. For most non-tech companies, a strong Product Owner or Product Manager who understands both your business and technology is enough. They define what needs to be built and why. Your specialised partner figures out how to build it. This core person (or small team) provides strategic direction and ensures technology serves your business needs. Outsource execution to a specialised partner who: Brings the right expertise at the right time Provides the technical leadership (architects, tech leads, engineering managers) Scales up or down based on project needs Maintains continuity even when individual engineers rotate Handles hiring, retention, training, and career development Brings best practices from across dozens of clients This gives you: Control without overhead – you set direction, they execute Strategy without management burden – no HR headaches, performance reviews, or career development programs to build Capability without commitment – access specialists without full-time salaries Technical leadership without executive salaries – leverage their CTOs, architects, and senior engineers Knowledge without key person risk – multiple people understand your systems Quality without building infrastructure – leverage their engineering practices, code review processes, and technical standards Think of it this way: your Product Owner defines the “what” and “why.” Your specialised partner provides the “how” and “who.” You don’t need to hire a CTO making €150K+ to manage 3 engineers. You need someone who understands your business deeply enough to translate operational needs into technical requirements. That person can be a strong Product Manager, a business analyst with technical fluency, or even an operations leader who’s tech-savvy. The heavy technical lifting: architecture decisions, technology selections, engineering best practices, team leadership. All that comes from your partner who does this full-time across dozens of clients. The Economics Make Sense Too Let’s run the numbers on building an internal team of 10 engineers: Direct Costs: 10 engineers × €70K average salary = €700K Taxes and benefits (40%) = €280K Office space, equipment, tools = €100K Recruiting (10% of salary) = €70K Total: ~€1.15M per year Hidden Costs: HR time managing performance, career development, compensation Technical leadership to guide architecture and mentor engineers Training budget for continuous learning Turnover cost (replacement typically takes 3-6 months, during which you’re understaffed) Opportunity cost of bad hires or wrong technical decisions What You Get: Limited technology breadth Knowledge is concentrated in a few people Career path challenges leading to retention issues Isolation from industry best practices Compare this to partnering with a specialised firm: Similar or lower cost for equivalent capacity Access to broader expertise Shared knowledge across multiple engineers Built-in continuity and redundancy No HR overhead Ability to scale up/down based on needs The economics aren’t even close. Unless software engineering is truly core to your competitive advantage (like it is for Google, Netflix, or Spotify), building this in-house doesn’t make financial sense. A Note for Startups If you’re an early-stage startup, the advice is more nuanced than “always build in-house” or “always outsource.” In the very beginning: pre-funding, pre-product-market fit don’t outsource your core product development. At this stage, you need: Tight feedback loops between product, engineering, and customers Rapid iteration to find product-market fit People who are all-in on your mission and vision Speed over perfection – you’re learning, not optimizing Outsourcing at this stage creates distance between you and your product. It’s also more expensive because you’re still figuring out what to build, which means constant changes and pivots. But here’s what smart startups do: they bring in a specialised partner at the very start to set the foundation. Before you hire your first in-house engineer, partner with a company like Q for 2-3 months to: Design the initial architecture – make the right technology choices from day one Set up pipelines and infrastructure – CI/CD, deployment automation, monitoring Establish coding standards – conventions, documentation practices, code review processes Create technical documentation – so future engineers can onboard quickly Define ways of working – agile ceremonies, sprint planning, ticket management This gives you a professional foundation built by people who’ve done it hundreds of times. You avoid the most common early-stage mistakes: Choosing the wrong tech stack and having to rewrite later Building a monolith that can’t scale Accumulating technical debt from day one Creating systems nobody else can understand Then, hire your first 1-3 in-house engineers who work within this well-architected foundation. They move fast, iterate on product, and stay close to customers, but they’re building on solid ground instead of making it up as they go. When you hit stable funding and you’re ready to scale , that’s when you bring Q back in. You’ve proven product-market fit. Now you need: Execution velocity to capture the market opportunity Specialised expertise your small team doesn’t have Capacity to build multiple features in parallel Quality and reliability as you scale Your small core team sets strategy and maintains the vision. Your Q partnership provides the execution horsepower, specialised skills, and engineering best practices to scale rapidly without breaking things. This three-phase approach gives you: Professional foundation from experienced engineers Speed and agility from a lean in-house team Scale and expertise from a specialised partner It’s the best of all worlds. In-House vs Outsourcing Software Development: The Bottom Line You became great at your industry by focusing relentlessly on your core business. Not by trying to simultaneously become a recruiting firm, an HR consultancy, a technology training academy, and a software engineering powerhouse. Software is critical to your business. It enables everything you do. But running a world-class software engineering function is a business unto itself. It requires: Specialised recruiting pipelines Competency frameworks and career ladders Performance management systems for technical roles Continuous learning infrastructure Technical leadership with deep expertise Communities of practice Centres of excellence that distill best practices across projects Building all of this for a small internal IT team makes no sense. The ROI isn’t there. You’ll spend years and millions building mediocre versions of what specialised companies already do excellently. Partner with people who’ve built the systems, processes, and culture to do software engineering right. Keep your focus on what you do best . Let them handle the rest. So when it comes to in-house vs outsourcing software development, your customers don’t care whether your engineering team is internal or external . They care whether your product works, whether it solves their problems, and whether you’re innovating to serve them better. That’s what you should be focused on. Not whether your engineers have growth opportunities or which CI/CD pipeline to use. Your company in today’s world definitely needs software. But that doesn’t mean you need to become a software company . For that, you have us. Hrvoje Gorajscan As CEO of Q, Hrvoje, also known as Harry G, focuses on building digital products that matter and partnerships that move the business forward. His role is to keep shaping a company where strategy, technology, and design work together naturally, with a clear focus on lasting value. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 10, 2026 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 10, 2026 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Infrastructure Automation Tools: How to Optimise Your IT Processes - Tech Consulting and Software Engineering URL: https://q.agency/blog/infrastructure-automation-best-tools-optimise-your-it-processes/ Find out why infrastructure automation tools are a key tool for the optimisation of numerous processes within software development! Infrastructure Automation Tools: How to Optimise Your IT Processes | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Infrastructure Automation Tools: How to Optimise Your IT Processes Infrastructure Automation Tools: How to Optimise Your IT Processes March 30, 2025 — 10 min read Automation has nowadays become a key tool in the optimisation of countless processes. That’s why there are various tools out there on the market that deal with optimising these processes so that software solutions can be developed faster and have more resilient systems. In DevOps practices, an important element of automation are infrastructure automation tools that help automate the management of infrastructure and servers, and accomplish tasks faster. Let’s take a closer look a this topic and see which are some of the most popular infrastructure automation tools. What is Infrastructure Automation? Infrastructure automation implies the use of certain tools that help us with the automated management and maintenance of IT resources. This includes servers, virtual machines, cloud, containers and other components that make up the infrastructure. What is the task of these tools? Reduce the need for repetitive tasks . In addition, the possibility of human error is brought to a minimum. Result? More efficient and reliable process implementation. And who primarily deals with infrastructure automation? DevOps engineers, system admins and cloud architects. These are experts who design, implement and maintain scripts. They also deal with the maintenance of processes that allow the infrastructure to be easily adapted, depending on what the development itself requires. Which Infrastructure Automation Tools Are Best? Of course, infrastructure automation is nothing without the proper tools that help facilitate it. So here are the top 5 tools that make life easier in this regard. 1) Terraform Terraform is certainly one of the most popular tools in this field. It is an open-source product, popular among DevOps engineers due to its intuitive nature and ease of use. What Terraform enables is defining the infrastructure with the help of declarative configurations. The way it works is most often using HCL — HashiCorp Configuration Language. After that, the aforementioned configurations are used to create, update and delete infrastructure resources in various resources — automatically. And environments can be massive public clouds such as AWS, Azure or Google Cloud. Why Use Terraform? Its declarative approach: Terraform takes care of the implementation while the user defines the required state of the infrastructure, without the need for extensive scripts. Extensive support opportunities: What Terraform is known for is that it has a vast number of provider plugins, which can support a wide array of both services and technologies. Plan/Apply mechanism: When we talk about this useful mechanism, this tool first creates a change plan, and only then starts applying the task. In other words, the engineer can first see exactly what will change before the change itself. Configuration versioning: This means that config data can be tracked in systems like Git. The benefit? Higher efficiency and better collaboration among team members. 2) Ansible Another frequently used tool for infrastructure automation. What distinguishes it from Terraform is the principle of operation — and that is the ‘agentless’ approach. When using Ansible, it is not necessary to install any special software on the server except for SSH or WinRM on Windows systems. Another feature of Ansible are the so-called playbooks, or YAML files in which tasks and configurations are written. And that helps make them easier to understand by a wider number of experts. Why Use Ansible? Simple implementation: Due to its agentless approach, deploying Ansible is a piece of cake Declarative & imperative approach: This tool supports declarative patterns, and it also allows for imperative instructions on what tasks to do and in what order. Big user community: Ansible community is big. And this means that there is also a large number of users with extensive documentation – this enables the active publication of new roles and modules for various needs. 3) Puppet One of the oldest and most well-known infrastructure automation tools is Puppet. When using Puppet, each target server has an agent installed. And this agent applies config rules from the main Puppet server. Puppet follows the declarative configuration model and the agent-server architecture — this concept is especially suitable for more complex/enterprise environments. For example, when changes need to be distributed and monitored in real time. Why Use Puppet? Years-long presence: Like Ansible, Puppet has a large community and therefore extensive documentation. Declarative language: Configurations are written in Puppet DSL (Domain Specific Language). This makes larger systems easier to read and maintain. Modules & extensions: There are numerous both official and user modules, so for practically every need there is an already existing solution, which makes the work of experts like DevOps engineers immensely easier. 4) Chef Another infrastructure automation tool that could be considered one of the pioneers in the area is Chef. Its principle is the agent-server architecture and the utilisation of Ruby ‘cookbooks’ and ‘recipes’ for defining configurations. The fact that it has agent-server architecture makes it similar to Ansible, and it makes it a very flexible tool to work with. However, since it’s a Ruby-based tool, it can be a bit harder to learn for those with less experience. Why Use Chef? Vast ecosystem: One of the key benefits is the extensive ecosystem of ready-made ‘cookbooks’ and ‘recipes’ for a wide range of technologies. Code-based model: All configuration aspects are written in Ruby programming language. This gives Chef a lot of flexibility, but as a ‘downside’ for the less experience, it requires being skilled in coding. Chef Automate: This enterprise platform allows teams to collaborate effortlessly — with additional features such as analytics, visualisation and control mechanisms for the teams. 5) SaltStack The final infrastructure automation tool we’ll be talking about is SaltStack. It’s open-source and it combines both the agent-server architecture and the agentless approach. It’s known for its speed and scalability, especially in larger environments where managing a vast number of servers is a must. This is where YAML steps in as it’s used by SaltStack for defining configuration. Why Use SaltStack? Ease of communication: SaltStack makes it easy to efficiently send commands to a large number of systems. This is made possible by using ZeroMQ for asynchronous communication. Modularity: To make it easier to structure the code into reusable modules, there is also the possibility of modularity. SaltStack has a very rich collection of modules and integrations with different technologies. States & pillars: What’s also useful about SaltStack are states and pillars. States are YAML-based configurations, whereas pillars are additional data. This SaltStack feature allows for centralised management and easier adaptation of different environments. 6) Pulumi One of the new, but increasingly used and popular tools for infrastructure automation is Pulumi. What sets it apart from others is that programming languages ​​can be used for infrastructure automation because Pulumi allows you to write infrastructure as code. Some of the languages ​​that coders with a strong set of skills can use are, for example, Go, Python, or C#. Why use Pulumi? Infrastructure as code (Iac): Unlike the previously mentioned tools, Pulumi allows the use of programming languages ​​— and this gives DevOps engineers and other professionals more room for adjustments and reusability. State management: Which changes are needed to comply with the required config? Pulumi maintains the infrastructure state (just like Terraform does it too) so that changes can be adjusted more easily. Cross-cloud support: This tool seamlessly works and integrates with Google Cloud, AWS, Azure, etc. 7) Crossplane Last but not least, Crossplane. Like Terraform and SaltStack, Crossplane is an open-source tool. But its ‘unique selling point’ is that it merges infrastructure automation with the Kubernetes container orchestration system. The result? Providing a ‘Kubernetes-like’ way of resource management. Crossplane is deeply integrated with the Kubernetes API , it has a declarative approach in the full sense and also allows infrastructure to be defined as code, but also orchestrated through an existing CI/CD process. More specifically, this means that all configuration can be tracked, versioned and verified through standard GitOps or CI/CD practices. Why use Crossplane? Use of CRD: Crossplane uses Kubernetes Custom Resource Definitions (CRD) so that various infrastructure resources can be managed in the same way as ‘native’ Kubernetes objects. Role separation: Another feature of this infrastructure automation tool is the option to separate platform engineers and application teams. The difference between the two is that platform engineers define resources, whereas application teams use these resources — and they do not need to necessarily have vast knowledge on cloud providers. Extensive cloud support: Crossplane currently supports Google Cloud, AWS, Azure, and a number of other systems, and the Crossplane community continues to develop additional extensions. Why are these tools essential for modern IT processes? Now that we have listed these five tools, we’ve brought closer the importance of infrastructure automation itself for today’s needs in the IT sector. The common goal of all these tools is automation and the increase in work efficiency while reducing the manual work. Therefore, DevOps engineers, system admins and others who deal with field of work can work on more complex tasks, while repetitive routine tasks can be assigned to these tools analysed in the article. What’s noticeable is that companies that use these tools and have an infrastructure automation process in a well-established manner, have faster software delivery and adapt to the market faster . And nowadays the market is volatile and sometimes — truth be told — ruthless. That’s why it’s important to be prepared for all potential shocks in dynamic surroundings of nowadays, especially when cloud services and container technologies are becoming increasingly important. AI & Infrastructure Automation Of course, nowadays, artificial intelligence and machine learning are becoming more and more integrated into infrastructure automation tools’ work. As it’s quite known pretty much everywhere by now, AI helps in all fields of technology in decision-making processes and risk assessment. Talking about risk assessment, an essential feature of AI in infrastructure automation is the ability to predict potential issues before their very occurrence. For example, analytics driven by AI predicting capabilities can evaluate system behaviour and offer experts help to adjust the system; and ultimately, improve its efficiency. Conclusion In this article, we’ve shown the importance of infrastructure automation in today’s time and age, and presented the 5 most popular tools that serve to make this process flow easier. Nowadays, DevOps and CI/CD are the standard in software development, and the same goes for infrastructure automation .

Which exact tool to choose depends on your business needs, but the fact is that Terraform, Ansible, Puppet, Chef, and SaltStack (as well as other tools on the market) enable easier management of complex environments. Each of them has its own special benefits, and the best, optimal solution can be found for each different case. After all, infrastructure automation and the tools that deal with this lead to reduced costs and time resources, less opportunity for human error, and ultimately, easier and faster delivery of your software product or service. Our team of DevOps engineers is highly skilled in this area, so don’t hesitate to schedule a consultation with us in case you need these services. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 30, 2025 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 30, 2025 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # What Publishers Really Need – Insights from the INMA World Congress in New York - Tech Consulting and Software Engineering URL: https://q.agency/blog/inma-world-congress-in-new-york-what-publishers-really-need/ We came back from the INMA World Congress in NYC, where our goal was to understand what publishers trulyt need from their tech partners today. What Publishers Really Need – Insights from the INMA World Congress in New York | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > What Publishers Really Need – Insights from the INMA World Congress in New York What Publishers Really Need – Insights from the INMA World Congress in New York June 3, 2025 — 3 min read We recently returned from the INMA World Congress in New York, where we joined media leaders and some of our clients like News Corp and Daily Mail. Our goal was to understand what publishers truly need from their tech partners today. Here are five key trends shaping the media industry – and what they mean for companies like us. 1. The focus is shifting from “more” to “what matters.” Forget chasing scale at all costs. What we saw at the INMA World Congress is that more and more publishers are prioritising: direct audience relationships trust and retention smaller but highly loyal user segments What this means for tech: Solutions must support micro-targeting, personalisation, and 1st-party data operations. Performance now comes from deep engagement, not mass reach. 2. Brand isn’t marketing. Brand is the newsroom. In an age where everything is content, brands with a clear voice and point of view win. Bloomberg, The Atlantic, and NPR showed how the newsroom can become the brand engine. What this means for tech: CMS, workflows, and AI tools must serve the journalist, not slow them down. Flexibility, speed to publish, and multi-format support are key. 3. Constructive paranoia is the new mindset. More publishers are adopting a “constructive paranoia” approach. This means staying alert to industry shifts before they hit. This proactive mindset is becoming essential for sustainability. What this means for tech: Flexible CMS platforms, rapid prototyping, and continuous experimentation allow media companies to stay ahead, test quickly, and adapt fast. 4. Custom software is on the rise. One-size-fits-all is fading. Media companies want solutions tailored to their operations and users. What this means for tech: Custom, modular systems built with agile practices are enabling faster innovation, tighter integrations, and more meaningful user experiences. 5. AI is real. But no one has the answers (yet). Everyone’s testing LLMs, everyone’s attending AI panels — but no one’s cracked the code. The Atlantic shared a powerful list of the hard questions every publisher should be asking. What this means for tech: Tech partners must come ready to collaborate, test, and iterate — not just deliver “solutions.” Bonus insight: Gen Z is changing the game. Much of the conference focused on how younger audiences consume and experience content. Shorter formats, creator-first models, and platform-native storytelling are leading the shift. What this means for tech: Media companies need to rethink formats, UX, and tone. And they’ll need partners who can experiment alongside them — quickly. Conclusion The industry is moving fast. And while uncertainty remains, one thing is clear: publishers are no longer looking for “just a dev agency.” They need tech partners who understand the context and can move with them. If you’re exploring that path, we’re happy to share our full INMA World Congress takeaways, talk about our experience, and show how we approach real-world publishing challenges. Want to see how these insights translate into action? Drop us a line and contact us . And if you found this useful, share it with your network! Mario Jerkovic Mario is our Head of Business Development who works on our growth efforts, focuses on building strong partnerships with our clients, and has an eye for strategic opportunities. The result? Him sealing the deal and ensuring long-term client success. When he's not working on growing our network, Mario enjoys taking photos, cooking, and going for long walks to clear his head. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 3, 2025 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 3, 2025 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # International Student Visit - Tech Consulting and Software Engineering URL: https://q.agency/blog/international-student-visit/ Q agency hosted international students for a visit focused on learning, networking, and exploring the challenges of the modern IT industry. International Student Visit | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > International Student Visit International Student Visit July 9, 2019 — 1 min read We hosted a group of students from ten dierent colleges. We are always happy to meet proactive students from all around the globe and get fresh ideas on how to solve complex industry problems. The purpose of the visits is to give the students the opportunity to learn by doing through the meeting, engaging and interacting with the management teams and the top-level executives of the companies. Visits like this provide students an opportunity to make vital contacts and discover key challenges of the modern world in the IT industry. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 9, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 9, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Introduction to AI-Driven PHP Development: Automating Entities with Symfony and OpenAI - Tech Consulting and Software Engineering URL: https://q.agency/blog/introduction-to-ai-driven-php-development-automating-entities-with-symfony-and-openai/ Learn how to automate PHP entity creation using Symfony components and OpenAI, reducing manual coding and streamlining development. Introduction to AI-Driven PHP Development: Automating Entities with Symfony and OpenAI | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Introduction to AI-Driven PHP Development: Automating Entities with Symfony and OpenAI Introduction to AI-Driven PHP Development: Automating Entities with Symfony and OpenAI November 14, 2024 — 5 min read Learn how to automate PHP entity creation using Symfony components and OpenAI, reducing manual coding and streamlining development for your next project. In this blog post, we’ll explore how to automate PHP entity creation using Symfony components and OpenAI’s GPT-4. If you’ve ever had to manually define entity classes, manage field definitions, or handle relationships in Symfony applications, you know how repetitive and error-prone the process can become. By leveraging the power of AI, we can streamline this workflow, automating much of the entity generation based on simple user input. This post covers how I built a CLI-based tool that asks users for entity specifications and then generates complete PHP entities and repositories, all with the help of OpenAI’s language model. We’ll dive into the Symfony components that make this possible, explain how OpenAI fits into the development process, and show you how to integrate AI into your own PHP projects. Whether you’re building new applications or enhancing existing ones, this approach can save you time and reduce coding fatigue. Introduction To learn more about creating your own console and using Symfony components to build CLI-based tools, check out our previous blog posts: Part 1: Using Symfony Components to Build a WordPress Plugin Maker for CLI Part 2: Extending and Enhancing Symfony CLI Tools In this continuation of building powerful CLI tools using Symfony components, we move into a more sophisticated example—automating the generation of PHP entities with the help of AI, specifically OpenAI’s GPT-4. This approach streamlines the process of defining your data models and relationships, enhancing development speed, and minimizing human errors when defining repetitive structures in your codebase. We’ll explore how I built an entity generator that takes user input, processes it through OpenAI, and returns complete PHP entities with relationships and repositories—ready to use in a Symfony project. The Objective: Automating Entity Creation Manually creating entities can be tedious, especially when working with multiple related entities and their associated fields. Symfony’s Maker Bundle offers some relief by automating parts of this process, helping developers create entities, commands, controllers, form classes, and more. However, even with the Maker Bundle, complex projects often require manual tweaks to ensure that each entity fully integrates with project requirements, such as custom traits, serializer groups, or specific ApiPlatform endpoints. While the Maker Bundle is helpful for basic cases, the process quickly becomes time-consuming as complexity grows. Extending it with custom commands can help, but it still involves repetitive work and leaves room for human error. Why Automate with AI vs. Using the Maker Bundle? Using AI to automate entity generation is a game-changer in terms of speed and simplicity compared to Symfony’s Maker bundle. With the Maker bundle, creating an entity involves running multiple commands (make:entity for each entity) and then manually defining fields, types, and relationships. Furthermore, it requires additional adjustments to meet specific requirements like adding serializer groups, custom traits, ApiPlatform endpoints, or specific relationships. This becomes time-consuming when dealing with multiple entities that have complex relationships. In contrast, our AI-powered CLI tool allows you to describe your requirements in a single, natural language prompt. For example, a prompt like: “App requires Restaurant with name, address, openingDate, rating, and one-to-many relationship with Employer; Employer with name, surname, role, one-to-many relation to Employee and many-to-one relation to Restaurant; Employee with one-to-one relation to User, many-to-one relation to Employer, name, surname, age, role” Using OpenAI, this request is processed in seconds to generate a well-structured JSON specification, which is then automatically converted into complete PHP entities with fields, types, relationships, and required annotations. This is the example of the specification file and it’s structure: { "entities": { "Videostore": { "fields": { "id": { "type": "int", "primary_key": true, "auto_increment": true }, "name": { "type": "string", "nullable": false, "length": 255 }, "location": { "type": "string", "nullable": false, "length": 255 }, "workingHours": { "type": "string", "nullable": false, "length": 255 } }, "relationships": { "dvds": { "type": "one-to-many", "target_entity": "Dvd", "mapped_by": "videostore" }, "customers": { "type": "one-to-many", "target_entity": "Customer", "mapped_by": "videostore" } } }, "Dvd": { "fields": { "id": { "type": "int", "primary_key": true, "auto_increment": true }, "title": { "type": "string", "nullable": false, "length": 255 }, "year": { "type": "int", "nullable": false }, "actors": { "type": "string", "nullable": false, "length": 255 }, "duration": { "type": "int", "nullable": false }, "genre": { "type": "string", "nullable": false, "length": 255 } }, "relationships": { "videostore": { "type": "many-to-one", "target_entity": "Videostore", "inversed_by": "dvds", "foreign_key": "videostore_id" } } }, "Customer": { "fields": { "id": { "type": "int", "primary_key": true, "auto_increment": true }, "name": { "type": "string", "nullable": false, "length": 50 }, "surname": { "type": "string", "nullable": false, "length": 50 } }, "relationships": { "videostore": { "type": "many-to-one", "target_entity": "Videostore", "inversed_by": "customers", "foreign_key": "videostore_id" }, "user": { "type": "one-to-one", "target_entity": "User", "foreign_key": "user_id" } } } } } How Much Faster Is It? Based on common scenarios, using OpenAI for this process can be up to 5-10 times faster than using the Maker bundle, depending on the complexity of the entities: 1. Single Command vs. Multiple Steps : With the Maker bundle, you need to define each entity and relationship step-by-step, sometimes requiring 5-10 separate commands and additional manual adjustments for traits, serializer groups, and other elements. With OpenAI, a single instruction covers all entities and relationships. 2. No Manual Adjustments : Each entity generated by OpenAI is tailored to fit our Symfony skeleton from the start, with traits, relationships, and ApiPlatform readiness. In contrast, using the Maker bundle typically requires manual code adjustments afterward, which can add significant time. Our team has fine-tuned a custom Symfony skeleton over the years to support high standards in application architecture, including design patterns, authentication, testing, and more. This means each generated entity must have a specific structure that aligns with our standards. For example, here’s a typical entity structure: ['Employee:get'], ], denormalizationContext: [ 'groups' => ['Employee:create'], ], name: 'api_v1_employees_create', ), new GetCollection( uriTemplate: '/employees', normalizationContext: [ 'groups' => ['Employee:get', 'item:created_by'], ], name: 'api_v1_employees_index', ), new Get( uriTemplate: '/employees/{id}', normalizationContext: [ 'groups' => ['Employee:get', 'Employee:users', 'user:get'], ], name: 'api_v1_employees_get', ), new Put( uriTemplate: '/employees/{id}', normalizationContext: [ 'groups' => ['Employee:get'], ], denormalizationContext: [ 'groups' => ['Employee:update'], ], name: 'api_v1_employees_update_full', ), new Patch( uriTemplate: '/employees/{id}', normalizationContext: [ 'groups' => ['Employee:get'], ], denormalizationContext: [ 'groups' => ['Employee:update'], ], name: 'api_v1_employees_update', ), new Delete( uriTemplate: '/employees/{id}', name: 'api_v1_employees_delete' ), ], routePrefix: '/' . Constants::API_VERSION_V1, mercure: false, )] class Employee implements EntityInterface, Stringable { use TimestampableTrait; use CreatedByTrait; #[ ORMColumn(name: 'id', type: Types::INTEGER), ORMGeneratedValue(strategy: 'AUTO'), ORMId, AssertType(Types::INTEGER, groups: ['Employee:create', 'Employee:update']), Groups(['Employee:get', 'Employee:id']) ] private ?int $id = null; 3. Simplicity and Ease of Use : Using OpenAI also makes the process far easier by letting you describe the entities in natural language rather than having to remember and type specific commands and fields repeatedly. This allows you to focus on high-level logic rather than low-level implementation details. This approach not only reduces coding fatigue but also minimizes the risk of mistakes, as the AI consistently applies the structure and patterns defined in the prompt. How the Automation Works: Step-by-Step Below is an outline of the key steps in the automated process, which demonstrate how OpenAI and Symfony components work together to streamline entity creation. Step 1: Requesting Entity Configuration via CLI We begin with the CreateNewAppCommand.php , which prompts the user for inputs like the application name and directory path. This command also manages the folder structure by creating necessary directories (e.g., the app folder and subfolders). To handle folder creation, we use the Symfony Filesystem component, which simplifies managing directories and files. use SymfonyComponentFilesystemFilesystem; $filesystem = new Filesystem(); $filesystem->mkdir($appDirectory); Once the folder structure is set up, CreateNewAppCommand.php triggers the GitCloneCommand.php to git clone our Symfony skeleton repository into the provided directory path. The cloned repository is placed inside the app folder created based on the user’s input. This ensures that the project setup follows our internal standards. We use the Symfony Process component in GitCloneCommand.php to automate the cloning process: use SymfonyComponentProcessProcess; $process = new Process(['git', 'clone', 'repository-url', $appDirectory]); $process->run(); This seamless flow — from requesting user input, creating the app folder, and cloning the Symfony skeleton—ensures the project is initialized correctly and ready for further configuration. Step 2: Generating the JSON Configuration Next CreateNewAppCommand.php command uses a separate command ( GenerateConfigJsonCommand.php ) to generate the required JSON configuration for our entities. Load YouTube video This video is hosted by YouTube. Loading it lets them set cookies on your device. We’ve built a custom service, OpenAiService , that interacts with OpenAI’s API to handle the request and return the generated code. Here’s a breakdown of how this works: 1) Interacting with OpenAI : When the The GenerateConfigJsonCommand.php processes the user-provided instructions, it sends the instructions to OpenAI through the OpenAiService . This service interacts with OpenAI’s GPT-4 to generate the desired structure in JSON. // Example of interaction with OpenAI $response = $this->client->chat()->create([ 'model' => 'gpt-4', 'messages' => [ ['role' => 'system', 'content' => $systemMessage], ['role' => 'user', 'content' => $instruction] ], ]); 2) Handling User Input : The user-provided input is passed as a prompt to OpenAI, which then generates structured JSON code based on this input. { $io = new SymfonyStyle($input, $output); $helper = $this->getHelper('question'); // Ask for instructions for the structured file $userInstruction = $io->ask('Please provide instructions for the config JSON file (e.g., App requires Dealer with name, surname, city, etc.).'); Here’s the prompt I used to generate the correct structure for the JSON specification file: Predefined system and user messages for JSON generation $systemMessage = 'You are a helpful assistant. You must return only valid JSON.'; $instruction = 'Please generate a valid JSON representation of Symfony entities based on the following instructions: ' . $userInstruction . '. 1. Exclude the "User" entity if it is provided in instructions since it already exists. Make relations to "User" as if it is already defined in the system. 2. For each entity, return a JSON object with the following structure: { "entities": { "EntityName": { "fields": { "fieldName": { "type": "string | int | datetime | other", "nullable": true | false, "length": 50 | 255 | other, // if applicable "primary_key": true | false, // if applicable "auto_increment": true | false // if applicable } }, "relationships": { "relationName": { "type": "one-to-many | many-to-one | one-to-one", "target_entity": "TargetEntity", "mapped_by": "FieldName", // if applicable "inversed_by": "FieldName" // if applicable } } } } } 3. For fields: - Use "int" for ID fields, make them auto-incrementing, and set them as primary keys. - Use "string" with length 255 for most fields unless otherwise specified. - Use "datetime" for date fields. - Assume fields are non-nullable unless specified otherwise. - Do **not** add separate fields for foreign keys (like `employer_id` or `user_id`) if a relationship is already defined under relationships. 4. For relationships: - For one-to-many or many-to-one, ensure you define both the foreign key and the relationship in the JSON. - Use foreign key fields with type "int". 5. For string fields like name or surname, assume a length of 50 unless otherwise specified. 6. Ensure the output is a valid JSON object, using the top-level key "entities" with entity names as nested keys. Here is an example output structure for an "Employer" entity: { "entities": { "Employer": { "fields": { "id": { "type": "int", "primary_key": true, "auto_increment": true }, "name": { "type": "string", "nullable": false, "length": 50 }, "dob": { "type": "datetime", "nullable": false }, "role": { "type": "string", "nullable": false, "length": 255 } }, "relationships": { "employees": { "type": "one-to-many", "target_entity": "Employee", "mapped_by": "employer" } } }, "Employee": { "fields": { "id": { "type": "int", "primary_key": true, "auto_increment": true }, "name": { "type": "string", "nullable": false, "length": 50 }, "dob": { "type": "datetime", "nullable": false }, "role": { "type": "string", "nullable": false, "length": 255 } }, "relationships": { "employer": { "type": "many-to-one", "target_entity": "Employer", "inversed_by": "employees", "foreign_key": "employer_id" } } } } }'; This request prompts OpenAI to generate a well-structured JSON file that defines all entities and their relationships. Automating this process simplifies managing large specification files, ensuring consistency and reducing human error. OpenAI plays a crucial role here, as it helps ensure that the generated structure aligns with the specifications provided. The system message allows us to specify the “persona” of the model, instructing it to behave in a certain way. In this case, I used $systemMessage = ‘You are a helpful assistant. You must return only valid JSON.’ to guide the model’s behavior and focus its output on providing strictly valid JSON without extra notes or explanations. Achieving consistent, high-quality results requires a precise and well-defined prompt. The accuracy of the generated structure heavily depends on the clarity of this prompt, so refining and testing it is essential. For more on prompt engineering, including techniques for crafting effective prompts, you can visit OpenAI’s Prompt Engineering Guide . It’s also important to note that OpenAI sometimes returns additional notes or text alongside the code. Therefore, it’s a good practice to validate the generated output to ensure it’s a valid JSON structure. // Extract the content (assumed to be valid structure in the requested format) $generatedContent = trim($response['choices'][0]['message']['content']); // Validate based on the requested type if ($type === 'JSON' && !$this->isJson($generatedContent)) { return null; // Return null if it's not valid JSON } We use Symfony Filesystem to store the generated specification file in the app’s folder. Step 3: Leveraging OpenAI for PHP Entity Generation Now the one of the most exciting parts of this system is the ability to generate PHP code automatically by integrating OpenAI. By passing specific instructions through OpenAI’s GPT-4, we can generate the PHP entities and repositories based on a JSON configuration, which drastically reduces the amount of manual coding. Load YouTube video This video is hosted by YouTube. Loading it lets them set cookies on your device. To avoid hitting OpenAI’s rate limits, a sleep(30); delay is added within the loop that generates each entity. This pause ensures each request has enough time to complete without exceeding the maximum allowed requests or tokens per minute. By spacing out the API calls, the tool avoids interruptions, allowing entity generation to run smoothly and without triggering rate restrictions. Crafting Effective Prompts for Consistent Results : A critical part of working with OpenAI in your project is crafting prompts that yield exactly the kind of code you need. This part is tricky because the language model can generate unexpected results if the instructions aren’t clear or detailed enough. In our case, generating accurate PHP entities with Symfony annotations required a prompt that was both precise and exhaustive. Here’s an shortened example of the prompt I used to generate an entity class through OpenAI: Generate the entity PHP class using OpenAiService $systemMessage = 'You are a helpful assistant. You must return only valid PHP code for an entity class.'; $userMessage = <<id`, not `$id`. 13. Implement the `__toString()` method. . . . 15. Use this template as an example: $exampleEntityClass 16. Ensure that new entities should have namespace `AppEntity`. . . . 20. Ensure that bi-directional relationships are symmetrical: - For bi-directional relationships, always include both `mappedBy` on the **inverse side** and `inversedBy` on the **owning side**. - Verify that the fields reference each other correctly (e.g., `OneToMany` on one side, and `ManyToOne` on the other side). 21. Validate that all relationships from the configuration are implemented in the generated entity. TEXT; Cleaning the Output : Once OpenAI returns the generated PHP code, we clean it to ensure it is properly formatted according to our Symfony project’s requirements. The OpenAiService includes methods to remove unnecessary text and ensure the content is only PHP code. private function cleanGeneratedPhpCode(string $generatedContent): string { $generatedContent = str_replace('```php', '', $generatedContent); $generatedContent = str_replace('```', '', $generatedContent); // Strip anything after "Note" or other non-code markers $cleanedContent = preg_replace('/Note.*$/s', '', $generatedContent); return trim($cleanedContent); } Storing the Output : Once OpenAI returns the generated PHP code, we use Symfony Filesystem again to store the generated entity classes. The Filesystem component allows us to write the generated code directly into the correct directories making the entities immediately ready for use: $filesystem->dumpFile($filePath, $generatedCode); Through this automated process, we eliminate much of the repetitive work of manually creating and configuring entities. Instead, OpenAI takes the user instructions, generates code based on predefined patterns, and the service cleans the output to ensure its compatibility with the rest of the application. Step 4: Automating Repositories For each entity generated, the corresponding repository class is also created. For this we don’t need OpenAI since the template is simple and we can just replace placeholders and store the file with Symfony Filesystem . private function generateRepositoryClass(string $entityName, string $outputDirectory): void { $repositoryClassContent = << Blog > Invoice Processing Revolution: How Machine Learning Cuts Costs and Saves Time Invoice Processing Revolution: How Machine Learning Cuts Costs and Saves Time September 26, 2025 — 5 min read AI-driven automation is transforming all aspects of businesses, reducing costs, improving accuracy, and enabling scalability. In this article, find out how enterprises can adopt AI more efficiently through the example of invoice processing. Invoice processing is a critical function for businesses, yet many enterprises still rely on manual or semi-automated workflows. These traditional methods lead to inefficiencies, errors, and scalability challenges. Digital transformation in finance is no longer optional — it’s a necessity for staying competitive. This case study explores how an AI-powered invoice processing system was developed and implemented . The project proved that it would reduce costs and that the efficiency would improve positioning the client for future growth. We’ll discuss key challenges, the advantages of leveraging external AI expertise, and how this technology enhances business processes without the burden of full-time hiring. Challenges of Traditional Invoice Processing Manual invoice processing is time-consuming and error-prone. Even with rule-based automation, organizations struggle with inconsistencies, lack of scalability, and integration challenges. Human error in data entry leads to costly mistakes that require additional resources to correct. Processing times can be slow, especially when finance teams are overwhelmed with high-volume transactions. Many enterprises also lack in-house AI talent , making it difficult to automate workflows effectively. Existing ERP systems may be difficult to integrate with, and employees lack time or knowledge to adopt new technologies. Addressing these pain points allows businesses to unlock significant cost savings and operational efficiencies. The AI-Powered Solution: A Case Study To tackle these inefficiencies, we led the development of an AI-powered invoice processing system. The goal was to prove the feasibility of automating invoice workflows using machine learning. Early on, we did a brainstorming session with the client to see what would yield the best ROI . After careful evaluation, we determined that automating the processing of incoming invoices would provide the highest return on investment. As Lord Kelvin famously said, “What is not measured, cannot be improved” . With that in mind, we set out to track key metrics: OCR accuracy, the precision of machine learning in attributing invoices to the correct accounts, and the extraction of critical information from diverse document formats. One of the biggest challenges was handling the variance in document formats. However, after refining our models to reach a satisfactory accuracy level, to an innocent observer, the automation looked like nothing short of magical. The project was completed in just one month, demonstrating how AI could quickly be deployed for real-world business impact . The system achieved 86% accuracy based on 2,000 real invoices and effortlessly showcased its potential for reducing human effort and improving efficiency. It seamlessly integrated with the client’s existing ERP system , which further helped with smooth adoption without major infrastructure changes. Business users quickly recognised its value and pushed for production deployment, validating its success beyond a theoretical proof of concept. Why External AI Expertise Beats Full-Time Hiring One of the biggest obstacles to AI adoption is the lack of internal resources. Hiring full-time AI engineers is costly, risky, and time-intensive. Instead, enterprises can benefit from highly specialised external AI teams that bring deep expertise and can deliver results efficiently. By leveraging external experts, businesses avoid the ongoing operational costs associated with maintaining an in-house AI team. These specialists also bring valuable cross-industry experience which further reduces the risk of failed implementations. The ability to scale AI projects quickly without the commitment of full-time hires means that businesses can implement solutions in a fraction of the time it would take to build an internal team. Seamless collaboration with existing IT departments ensures smooth implementation without disrupting current workflows. There’s also something to be said about having an agency of nearly 300 experts, working across diverse industries, at your side. Cost Savings and Future Readiness Beyond improving invoice processing, AI adoption unlocks broader business benefits. Faster processing times enable businesses to handle more invoices with fewer resources . Reducing manual errors leads to significant cost savings and eliminates the need for additional labor to correct mistakes. AI-powered systems are scalable , meaning they can expand to accommodate larger enterprises and international markets. Companies that adopt AI early position themselves ahead of competitors by leveraging automation to improve financial operations. Future-proofing with AI ensures that businesses remain adaptable to evolving industry demands and emerging technologies. Key Takeaways This case study highlights how AI-driven invoice processing transforms financial operations. The PoC demonstrated tangible value, leading to immediate user adoption. Enterprises looking to modernize should consider external AI experts for faster, cost-effective solutions that integrate seamlessly with existing systems. Benefits for the business: Significant reduction in manual processing errors Faster invoice processing, improving financial operations Lower operational costs and higher scalability Seamless integration with existing ERP systems Our success: Demonstrated AI expertise through a high-impact PoC Achieved 86% accuracy in a short timeframe, proving feasibility Built trust with stakeholders, leading to long-term opportunities Positioned for expansion into larger markets with scalable AI solutions Ready to explore AI-driven transformation? Contact us to discover how we can help your enterprise leverage AI for greater efficiency and growth! Marin Crnkovic As the Manager of Solution Architecture Excellence, Marin specialises in leveraging technology to solve complex business problems. With a passion for learning, he quickly adapts to new technologies and integrates them seamlessly into existing systems. Marin's expertise spans digital transformation, project management, process optimisation, and mentoring both individuals and teams. Outside of work, he enjoys 3D printing, electronics, hi-fi, and photography. Having two kids also means he has almost no time for the aforementioned stuff. 🙂 GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 26, 2025 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 26, 2025 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # iOS Custom Table Views with Cells - Tech Consulting and Software Engineering URL: https://q.agency/blog/ios-custom-table-views-with-cells/ Learn how to create custom table view cells in iOS. Improve UI design and performance with practical tips for building dynamic and reusable table views in Swift. iOS Custom Table Views with Cells | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > iOS Custom Table Views with Cells iOS Custom Table Views with Cells October 24, 2025 — 15 min read Table Views are a big part of iOS, and being able to create a fully customized table view is awesome. By the end of this tutorial, you will have a table view that looks like this. To begin, open Xcode, click “Create a new project” -> “Single view app”, name it “CustomTableViewExample” click “Next”, and “Create”. Now go to the Main.storyboard, click on the “Library” on the top right corner, select a table view, and drag and drop the table view on the view controller. Add the constraints to the table view, and add one cell to the table view. To do so, click on the “Library” again, select table view cell, and drag and drop it on the table view you just added. Now we can go to our ViewController.swift and write some code. Our code looks something like this. import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } } What we need to do is add an outlet for our table view and comfort some protocols. To add the outlet add this part of the code to your ViewController class. @IBOutlet weak var tableView:UITableView! You have to connect the outlet in your Main.storyboard. To do so, open Main.storyboard, on the left side click on the View Controller, then click on “The Inspectors” on the right side of the window, select “Connections Inspector” and find tableView. Click and drag and drop the circle on the tableView in the ViewController. Now we can comfort the protocols for our table view, and to do so, add this part below the ViewController class. extension ViewController: UITableViewDataSource, UITableViewDelegate { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { } } There are two errors in the functions because there is no return value, but don’t worry about that for now. The first function “numberOfRowsInSection” describes how many cells are there in each section. For our table view, there will be just one section, so there is no need to override the “numberOfSections” function, because the default value is one section. The “cellForRowAt” function describes the type of cell and you can configure parts of the cell in this function. That being said, we can create a custom cell for our tableView. To do so right-click the “CustomTableViewExample” folder in the project tree on the left side and add a new Swift file. Name the file “CustomCell” and click “Create”. Your new file will be almost empty, containing just one line of code saying: import Foundation To create a custom UITableViewCell, import a module named UIKit, and create a new class named CustomCell that inherits from UITableViewCell. Your code should look like this: import Foundation import UIKitclass CustomCell: UITableViewCell { } With this done, you have successfully created a new custom cell class. Now we need to add the cell in our table view and customize our cell. To do so, go back to your Main.storyboard, go to the right side of the window, in “The Inspectors” click “Identity Inspector” and in the “Class” filed start typing CustomCell and press enter. You will see that the checkbox “Inherit Module From Target” is now checked. By checking the “Inherit Module From Target” option the module gets compiled in for the targets we use it in and everything should work. Now let’s make this table view look awesome. First, let’s add the background image(gradient) and make the table view transparent. We are adding the gradient first, just so you can see what is happening. To do so, add an Image View and place it behind the table view. So again, “Library” -> “Image View” and drag and drop, but this time drag and drop it on the left side in the “Document Outline” above the Table View. Add the constraints to make it “fullscreen”. Go to the project tree and find “Assets.xcassets”, add the background gradient image and name it “gradBG”. The image I used in this tutorial can be found here. Now, go back to the Main.storyboard, click on the image view we just added, go to “The Inspectors”, click “Attributes Inspector”, find the “Image” field, start typing “gradBG” and press enter. With this done, our gradient is set up but we cannot see it yet because our table view is not transparent. Let’s fix that. Select the table view and in “The Inspectors” select “Attributes Inspector”, go down to the “View” section, find “Background” and make it “Clear Color”. After that select the custom cell and do the same thing again. You will notice that a part of the gradient is now visible, which is good. Now back to the code. In the ViewController.swift we have two errors that need to be fixed. First, we need some data to present it. So let’s make some data. Then, we will need to create an object. To do so go to the project tree and add a new swift file and name it Item. Like this: In the Item.swift add this part of the code: import Foundation import UIKitstruct Item { let image:UIImage = UIImage() let text:String = "" } This is just a simple structure for our Item object that has two variables; image and text. We will use this to create the data. With this done we can make another class that will act like an API Client. So add another file and name it APIClient. In the APIClient.swift add this part of the code: import Foundation import UIKitclass APIClient { func getData() ->[Item] { var array: [Item] = [Item]() let item1 = Item(image:UIImage.init(named: "settings"), text:"Settings") let item2 = Item(image:UIImage.init(named: "coin"), text:"Coins") let item3 = Item(image:UIImage.init(named: "graph"), text:"Usage") let item4 = Item(image:UIImage.init(named: "user"), text:"Profile") array.append(item1) array.append(item2) array.append(item3) array.append(item4) return array } } Let me explain what have we done here. We made a class that acts like APIClient. In the function getData() we are creating an empty array and four dierent items. When the items are created we are populating the array with those items and returning the value of the array. Not very complicated right? Now we can go back to our ViewController.swift and get the data we just created. To do so, create an empty array of items right below the tableView outlet like this: class ViewController: UIViewController { @IBOutlet weak var tableView:UITableView! var arrayOfItems:[Item] = [Item]() . . . Now in the “viewDidLoad” function add this code: override func viewDidLoad() { super.viewDidLoad() arrayOfItems = APIClient().getData() tableView.reloadData() } With this, we are populating the arrayOfItems with the data we created earlier and reloading the tableView so that we can populate the cells with this array. Now in the extension of the ViewController add this part of the code. extension ViewController: UITableViewDataSource, UITableViewDelegate { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return arrayOfItems.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellIdentifier") as? CustomCell { return cell } return UITableViewCell() } } Okay, let me explain this part. In the first function “numberOfRowsInSection” we are returning the count of the objects in the arrayOfItems which is four. The number of sections is by default one, as I said earlier. This part is pretty self-explanatory. The second function “cellForRowAt” is a bit more tricky. Here we are using our custom cell as the type of cell we want to present. As you can see there is a part of the code that is using the “Identifier”. The “Identifier” is associated with a UITableViewCell object that the table view’s delegate creates with the intent to reuse it as the basis (simplified: performance). We did not set the Identifier to our cell yet, so let’s do that now. Open your Main.storyboard and click on the Custom Cell, open “The Inspectors”, click “Attributes Inspector” and find the “Identifier” field. Type in “CustomCellIdentifier”. The best way to do so is to copy-paste the “Identifier” just to make sure you don’t make a typo. The second thing happening in the“cellForRowAt” is unwrapping the CustomCell object using the just added “Identifier”. This is not mandatory, but I prefer doing it like this just because the app will not crash if there is an error while dequeuing the cell. It will simply return the default UITableViewCell. That is why there is return UITableViewCell() at the end of the function. You can build and run the app and you should see the gradient and our transparent table view. Just to clarify, the table view is not empty, it has three cells in it, but the cells are empty and that is why it seems like there is nothing. Let’s add some content to our cells. Go to the CustomCell.swift and create an image view outlet and label outlet. Your code should look like this: import Foundation import UIKitclass CustomCell:UITableViewCell { @IBOutlet weak var cellLabel:UILabel! @IBOutlet weak var cellImage:UIImageView! } Now in your Main.storyboard, add the label and image view to your Custom Cell. Connect the outlets the same way you connected the tableView outlet earlier. Cool, that’s our Custom cell with all the outlets. Now we can configure the cell. so let’s start with resizing the cell. To do so go to the ViewController.swift and in the extension add this part of the code: func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 100 } This will set our cell height to 100, but we still have to add some constraints. This is what I added: Both the image view and the label are vertically in the container view of the cell, and the important part is that the image has a width and height of 80. Now, let’s add some icons to the project. You can download the images I used here . Go to the Assets.xcassets and add the images there the same way you added the gradient background image. Whit this done we can configure our cells but we need to create a function for that. Let’s navigate to our CustomCell.swift and add some code to the CustomCell class. func configureCell(item:Item) { cellLabel.text = item.text cellImage.image = item.image } This is where the magic will happen; we will pass the item from the arrayOfItems into the configureCell function and set the label text value and imageView value to the value of the item we passed. Now we need to call the function on the cell object to configure it. To do that go back to your ViewController and into the “cellForRowAt” function in the ViewController extension and add this part of the code: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellIdentifier") as? CustomCell { cell.configureCell(item: arrayOfItems[indexPath.row]) return cell } return UITableViewCell() } “cellForRowAt” works like a for loop, the number of iterations is the same as the return value of the “numberOfRowsInSection” function. Simply it’s one iteration, one cell. The “numberOfRowsInSection” most often has a return value of an “array.count”, you get the data via an API call, but in this tutorial we have faked the data in the APIClient. As you can see the arrayOfItems is passing just one Item into the “configureCell” function. That is why there is arrayOfItems[indexPath.row]. The [indexPath.row] is the number of the row that is currently in use in the “cellForRowAt” function, which means that the first time “cellForRowAt” is called the indexPath.row will be 0, the second time it will be 1, the third time it will be 2, etc. This means that “cellForRowAt” is passing the object on the correct index inside of the arrayOfItems. If you build and run the app, the tableView will still be empty, because we did not set the tableViews delegate and data source. There are two ways to do that. I will show you both ways and you decide which one works for you. So, the first way is in-code. Open ViewController.swift and in the “viewDidLoad” function add this: override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self } This is pretty much self-explanatory, so I won’t go into the details. The second way is using the Main.storyboard. So open the file and click on the tableView. In “The Inspectors” click on the “Connections Inspector” and you will see “dataSource” and “delegate” in the “Outlets” section. Drag and drop the circle into the yellow circle of the ViewController and that will do the job. Try to build and run the app. As you can see our tableView is populated with four custom made cells and everything works just fine, but if you select a row nothing happens and the row will remain selected. So, what we need to do is make something happen when the cell is tapped and deselect the row. First, we will deselect the row. To do that we will override a function named “didSelectRowAt” in the ViewController extension and add some code to it. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) } Here we are deselecting a row at the indexPath we tapped by calling the tableViews. That’s basically it. Back to the storyboard. We need to create a View Controller that will open and present data as we tap the cell. To do that open Main.storyboard and in the top right corner click on the “Library” and find View Controller, drag-and-drop it next to the existing ViewController. Add two image views (one for the background gradient and another for the icon) and a label to the new View Controller, the same way you added the View Controller itself, also add some constraints. You can create a layout as you wish, this is the layout I made: Now set the gradient as the background image like this, we already did this on the ViewController with the table view. Now we can create a .swift file for the new view controller. Go to the project tree on the left side and add a new file and name it DataPresentingViewController. Now we need to create the class and make some outlets for the image view and label. To do so add the following code in the DataPresentingViewController.swift file. import Foundation import UIKitclass DataPresentingViewController: UIViewController { @IBOutlet weak var dataLabel:UILabel! @IBOutlet weak var dataImageView:UIImageView!} Now we need to set the new view controllers class as the DataPresentingViewController and connect the outlets. To do so open Main.storyboard and in “The Inspectors” open the “Identity inspector”, click on the “Class” in the “Custom Class” section, start typing DataPresentingViewController, and press Enter. Now you can open the “Connections inspector” and you will see two outlets we just added. Connect them to the label and image view on the DataPresentingViewController. Now we have everything set up for our action. Go back to the ViewController.swift into the “didSelectRowAt” function. We need to open our new DataPresentingViewController and populate the label and the image view with selected data. To do so add the following code to the function. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) if let dataPresentingViewController = storyBoard.instantiateViewController(withIdentifier: "DataPresentingViewControllerIdentifier") as? DataPresentingViewController { self.present(dataPresentingViewController, animated: true, completion: nil) dataPresentingViewController.dataLabel.text = arrayOfItems[indexPath.row].text dataPresentingViewController.dataImageView.image = arrayOfItems[indexPath.row].image } } Before I explain what is happening here, there is an identifier that probably caught your eye. That is the view controller’s identifier. Let’s add that first so we don’t forget about that. Go to Main.storyboard, and click on the DataPresentingViewController, go to “The Inspectors”, “Identity inspector” and find the Identity section. Set the “Storyboard ID” as DataPresentingViewControllerIdentifier. Now let me explain what is happening here. When we select the row, we are first deselecting it and then we are initiating a new screen (DataPresentingViewController) in the Main.storyboard and we are unwrapping it. Again this is not mandatory, but just in case. After that, we are setting the value of the label and image view to the value of the specific item in the arrayOfItems. Again we are letting the “didSelectRowAt” function to select the item we need form the arrayOfItems with the indexPath.row the same way the “cellForRow” is doing that. You can try to build and run the app and tap on the cell. Our new screen should appear with the data you selected. But there is one more thing we have to do; dismiss the new screen. To do that open the DataPresentingViewController.swift file and add this part of the code below the outlets: @IBAction func dismissPressed(_ sender:Any) { self.dismiss(animated: true, completion: nil) } This action has to be connected to the button. We are going to connect it via storyboard the same way we connected the outlets. Open Main.storyboard, click on “Library”, find a button, drag-and-drop it under the label, and add some constraints. Change the text of the button by double-clicking on it and type “Done”. Now open “The Inspectors”, click on the “Connections inspector”, go to “Received Actions” section, and you will find the “dismissPressed:”. Connect the action to the button, and select touchUpInside. Build and run the app and try it out. That’s it! Here is the complete project on GitHub . I hope this helps, cheers! Filip Varda He pays attention to the smallest details and makes sure our mobile applications work. If you need to talk about the newest mobile trends or gadgets, he’s the guy to go to. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 24, 2025 — 15 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 24, 2025 — 15 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # iOS Delegates for beginners - Tech Consulting and Software Engineering URL: https://q.agency/blog/ios-delegates-for-beginners/ Learn how to use delegates in iOS development with Swift to transfer data between a custom view and a view controller. iOS Delegates for beginners | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > iOS Delegates for beginners iOS Delegates for beginners January 14, 2019 — 9 min read Most beginners in iOS development have a problem understanding delegates. Apple says that a delegate is an object that acts on behalf of, or in coordination with, another object when that object encounters an event in a program. To simplify, a delegate is an object that allows object A and object B to communicate with each other using functions or variables. Delegates are triggered by an event in the program(eg. Pressing a button). Let me explain this to you on a simple example of transferring data from a custom view to a view controller. Lets begin with creating a new Xcode project; so open Xcode, select Create a new Xcode project select Single View App and press Next. In the product name field enter DelegateExample, then press Next -> Create. Okay, now we have a project set up and we are ready to begin. Now we need to create a custom view that will represent object B. Our object A will be View Controller and it’s already created by Xcode. So, to create a custom view navigate to your project tree on the left side of Xcode window, right-click the Delegate Example folder, then click on New File… Select Swift file and click Next. In the Save As field enter CustomView then press Create Now, we will create a .xib file for our CustomView. To do that, right-click your Delegate Example folder again, and select New File…, but this time select View and press Next. Name the file CustomView again and click Create. Now you should see a CustomView.xib file in your project tree and you should have a screen that looks something like this. Okay, into the code we go. Open your CustomView.swift file and create a class for our custom view. To do that, just type this code into the file. import Foundation import UIKitclass CustomView: UIView { } Now we need to add a class to our view in .xib file. Navigate to CustomView.xib and at the top of the Inspectors tab, select Identity inspector In the Class field enter CustomView and press Enter. Now add a Button and Text Filed somewhere on the screen. I will add them to the center of the screen like this. Now back to the code, we need to create outlets for our text field and button. To do that add this code to your CustomView class. @IBOutlet weak var textField:UITextField! @IBOutlet weak var button:UIButton! Now connect the outlets with text field and button inside of the view in the .xib file. To do that, navigate to Inspectors again and select the Connections inspector. You will see two outlets that we just created. To connect them the text filed and the button simply press on the circle next to the name of the outlet and drag and drop them to the text filed and button inside the view. Now let’s go and add a label inside of our View Controller the same way. Go to ViewController.swift file and add this code inside the ViewController class. @IBOutlet weak var label:UILabel! Go to Main.storyboard and add a label and a button to the ViewController and connect the label outlet using inspectors. Great, now we have set up our object A and object B. Our object A will be ViewController and our object B will be CustomView. Now the idea is to type something into the text filed on the CustomView and change the text of the Label on the ViewController. To do that we will need a protocol. So let’s create one. Go back to CustomView class and add this code above CustomView class. protocol TextTransferDelegate: class { } Now let’s declare a function inside of the protocol we just added. protocol TextTransferDelegate: class { func transferText(text:String) } Okay, so we know that we will need to transfer some data from one object to another. To do that we will use this function we just added. We know that the type of data we are transferring is a simple String from the text field. That is why there is a parameter in a function named “text”. We will pass the data using that parameter later. Notice there is no method body inside of the protocol. That is because protocols are used just to declare functions or variables, not to implement them. Now let’s create a delegate property inside of CustomView class, simply add this code weak var delegate:TextTransferDelegate? = nil Great, now we have a property named delegate. The reason why delegates are declared as weak variables is simply to avoid the risk of a strong reference cycle (aka “retain cycle”). I personally prefer to make them optional and I will explain why later on. For now, let’s get back to our ViewController class and make an action for the button we added earlier so we can present our custom view. First, create a property for our custom view by adding this code to our ViewController class. var customView:CustomView = CustomView() After that, we need to register the nib for our customView and we can do that by adding this line of code into our viewDidLoad() function in the ViewController class. customView = (Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)?.first as? CustomView)! Now we can create an action for our button, and we can do that by simply adding this part of code @IBAction func presentCustomView(_ sender:UIButton) { } As this is an action event, so don’t forget to connect this action to the button on the ViewController inside of the Main.storyboard file. We can do that the same way we connected the outlets, using the inspectors. Drag and drop the action and you should get a drop-down menu. Select Touch Up Inside. Now the action is connected to the button. Let’s declare what the action will do after it’s triggered. To do so, go back to ViewController class and add this part of the code inside the action we just created. @IBAction func presentCustomView(_ sender:UIButton) { customView.center = self.view.center self.view.addSubview(customView) } Try to build and run the app. Press the button on the ViewController and you should get a new view with the text field presented. This is our CustomView. You can type some text in the text field, but how will that text be transferred to the label on the ViewController? Well, our protocol will do that for us, and here is how. First, we will implement the delegate and tell him what to do. Create an extension of the ViewController and inherit from the TextTransferDelegate like this extension ViewController: TextTransferDelegate { } If you try to build the project you will get an error saying “ Type ‘ViewController’ does not conform to protocol ‘TextTransferDelegate’ ” Remember the function “func transferText(text:String)” we created earlier? We need to implement the function so that ViewController can conform to the protocol. To do that add this part of code. extension ViewController: TextTransferDelegate { func transferText(text: String) { } } Now our controller conforms to the protocol, but the function is doing nothing as you can see. For now, let’s leave it like that and go back to the CustomView class and create an action for our button. Again simply add this part of the code and connect the action using the inspector. @IBAction func changeTextPressed(_ sender:UIButton) { } When we press the button we want to change the text of the label on the ViewController, and our protocol should do that for us, so let tell him to do so. Add this code to the action we just created. @IBAction func changeTextPressed(_ sender:UIButton) { guard let delegate = delegate else { return } delegate.transferText(text: textField.text!) } If you try to build and run, enter some text in the text filed and press the button, nothing will happen. Remember that I said to explain why I prefer to make delegates optional? This line of code: guard let delegate = delegate else { return } will prevent the app from crashing, because we didn’t set the custom views delegate and we are trying to call a function from a delegate that is currently nil. delegate.transferText(text: textField.text!) To fix this we need to go back to ViewController and find presentCustomView func. Add this part to the code: customView.delegate = self and your final presentCustomView function should look like this @IBAction func presentCustomView(_ sender:UIButton) { customView.center = self.view.center customView.delegate = self self.view.addSubview(customView) } With this line of code, we are setting the delegate to ViewController, and we have already implemented the protocol in the extension below the ViewController class. This means that our CustomViews delegate is ViewController, so when the delegate.transferText(text: textField.text!) is being called, what’s actually being called is (just to visualize) ViewController.transferText(text: textField.text!) which means that the function implemented in the extension of the ViewController is being called and the parameter “text” is transferred to ViewController, and we know that the value of the “text” parameter is textField.text. Now when you can see how this works, let’s go back to the protocols function implemented in the extension and add some code to it to make it look like this: extension ViewController: TextTransferDelegate { func transferText(text: String) { if text != "" { self.label.text = text self.customView.removeFromSuperview() } } } There are three things happening here. The first one is checking if the parameter “text” is an empty string, if “text” is empty nothing will happen, so make sure you enter some text into the textField before pressing the button on the CustomView. The second one is the real work of the protocol, and that is setting the label’s text to the parameter “text” (textField.text), and the third one is removing the CustomView form ViewController. This line of code is where all the magic happens. self.label.text = text Build and run the project and try it out yourself. Everything should work like a charm. Here is the complete project on GitHub . I hope this helps, cheers! Filip Varda He pays attention to the smallest details and makes sure our mobile applications work. If you need to talk about the newest mobile trends or gadgets, he’s the guy to go to. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 14, 2019 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 14, 2019 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # iOS Threads and Memory Management - Tech Consulting and Software Engineering URL: https://q.agency/blog/ios-threads-and-memory-management/ Learn how iOS threads work, how concurrent programming improves performance, and how memory management keeps apps efficient. iOS Threads and Memory Management | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > iOS Threads and Memory Management iOS Threads and Memory Management February 15, 2022 — 9 min read Let’s start with threads. If you ever tried running an app from Xcode, you heard about the Main thread . So, what are threads, how many are there, and how do you use them? A thread is a single sequential flow of control within a program, which means that each process has at least one thread. In iOS, the primary thread on which the process is started is commonly referred to as the Main thread . This is the thread in which all UI elements are created and managed. All interrupts related to user interaction are ultimately dispatched to the UI thread where the handler code is written — your IBAction methods are all executed in the main thread. The real thing is knowing how to use multiple threads simultaneously, called concurrent programming . This is a fancy way of saying running numerous tasks simultaneously, but I will get to that a bit later. The first question that pops in my mind is: Can’t you just run multiple tasks on a single thread? Sure, why not, but that is not always a good solution. Small tasks in small numbers can be run together because of today’s hardware. However, when it comes to complicated and more complex tasks, you should use background threads and see that fancy concurrent programming in action. If you run two tasks simultaneously on the main thread, they would be done using the “criss-cross” technique. Meaning that the thread would complete part of the first task, then part of the second, then back to the first, and again, the second one, until one of them is completed. Here is an example that should help you understand and visualize the tasks being completed: You have two mathematical operations (tasks) to complete. The first one will be 1+2+3 , and the second one 4+5+6 . Let’s say that a thread is the math teacher that will show us the result of these two operations. The thread will begin with the first task 1+2+3 and complete the first part, 1+2 . Then, it will solve the first part of the second task, 4+5 . Right after solving the first part of the second task, it will go back to the first one and solve the second part, which is now 3+3 ([1+2 = 3, -> 3+3]) . The first task is completed, and the thread resolves the second task. Here is a visualization. I tried my best! How do you use concurrent programming ? It’s pretty simple. You can use two threads instead of just one. Here is a simple example in code: import UIKit class ViewController: UIViewController {    override func viewDidLoad()       super.viewDidLoad()    }    override func viewDidAppear(_ animated: Bool) {       super.viewDidAppear(animated)       DispatchQueue.global(qos: .userInitiated).async {          let result1 = self.performTask1()          print("This is run on a background queue and the result is (result1)")          DispatchQueue.main.async {             let result2 = self.performTask2()             print("This is run on the main queue, after the previous code in outer block and the result is (result2)")          }      }    }    func performTask1() -> Int {       return 1+2+3    }    func performTask2() -> Int {       return 4+5+6    } } Here you can use the background thread as another math teacher that solves one mathematical operation, while the second teacher, your Main thread, solves the other one. Here is the visualization: In this example, you can use the background thread to solve a simple mathematical operation. Background threads are usually used when you have to download an image, make an API call or perform a task that will take some time. The question is, how do you know when the task is completed? Well, Swift provides us with a powerful tool called closures . Closures or completion handlers are a chunk of code that provides further instructions on what to do after the initial task is done. Most likely, you have seen this while presenting another controller on top of the current one: self.present(vc, animated: true, completion:(() -> Void)?) For example, after presenting the new view controller, you can print something in the log: self.present(vc, animated: true) {     print("New view presented")  } The same goes for background threads. After the API call is completed, you can use the closure to process further the data you obtained, and keep in mind that you should always update the UI from the main thread. Here is an example of downloading an image: import UIKitclass ViewController: UIViewController {   let imageView: UIImageView = UIImageView()   override func viewDidLoad() {     super.viewDidLoad()  }   override func viewDidAppear(_ animated: Bool) {     print("Begin of code")     let url = URL(string: "https://image.shutterstock.com/image-vector/example-red-square-grunge-stamp-600w-327662909.jpg")!     downloadImage(from: url)     print("End of code. The image will continue downloading in the background and it will be loaded when it ends.")  }   func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {  URLSession.shared.dataTask(with: url, completionHandler: completion).resume()  }   func downloadImage(from url: URL) {     print("Download Started")     getData(from: url) { data, response, error in        guard let data = data, error == nil else { return }        print(response?.suggestedFilename ?? url.lastPathComponent)        print("Download Finished")       // Always update the UI from the main thread!        DispatchQueue.main.async() { [weak self] in           self?.imageView.image = UIImage(data: data)        }     }  } } Memory management At first, there was no ARC back in the Objective C days. I used to retain and release objects by ourselves. Nowadays, ARC ( Automatic Reference Counting ) does this automatically. Xcode takes care of the job in compile time. Automatic Reference Counting manages object life cycles by keeping track of all valid references to an object with an internal retain count . Once all objects’ references go out of scope or are cleared, and the retain count thus reaches zero, the object and its underlying memory are automatically freed. If you free or overwrite the data that is still in use, you can cause memory corruption which usually results in your application crashing or, worse, corrupted user data. When allocated memory is not freed even though it will never be used again, it is known as a memory leak. Leaks cause your application to use ever-increasing amounts of memory, which in turn may result in poor system performance or your application being terminated. For example, if you for some reason load a video of 200Mb size on one screen, and right after that continue to the second screen without freeing the allocated memory for that video, and then come back to the first screen, again allocating new 2000Mb for the video, you will populate too much memory After doing this a few more times, your app will crash. To avoid doing these mistakes, here are three awesome rules that you can follow: You own the objects you create, and you have to subsequently release them when they are no longer needed. Use Retain to gain ownership of an object that you did not create. You have to release these objects too when they are not needed. Don’t release the objects that you don’t own. So as mentioned before, you don’t need to use release and retain in ARC. So, all the view controller’s objects will be released when the view controller is removed. Similarly, all object’s sub-objects will be released when they are released. However, keep in mind that if other classes have a solid reference to an object of a class, then the whole class won’t be released. So, it is recommended to always use weak properties for delegates . Xcode provides some tools to help with memory management. To use, you should select the Debug Navigator on the left Toolbar. You should see the Memory window being the second. If you wish to use more advanced tools, you can open the Instruments app with the Profile in Instruments in the top right corner. Bonus — Singleton objects I’m pretty sure that you heard about the singleton objects. Singleton object is a shared resource within a single unique class instance. So, for example, let’s say that you have an object containing some strings (I will call this object Words) used to populate some labels. You can either create a single instance of the Words object and use it through the app or create a new instance every time you need to populate the label. Here is an example of using the singleton object: First, you will create an object, Words, containing the strings that you need to populate the labels. import Foundationclass Words: NSObject {   var firstWord = "Church"    var secondWord = "Palace"    var thirdWord = "Castle"        static let shared = Words()} Simple, right? Notice that there is a static let shared which you will use. That is your singleton object. Now back to your ViewController that contains three labels. Here is what it should look like: import UIKitclass ViewController: UIViewController {   var firstLabel = UILabel()     var secondLabel = UILabel()     var thirdLabel = UILabel()   override func viewDidLoad() {        super.viewDidLoad()     }   override func viewDidAppear(_ animated: Bool) {        super.viewDidAppear(animated)      firstLabel.text = Words.shared.firstWord        secondLabel.text = Words.shared.secondWord        thirdLabel.text = Words.shared.thirdWord     }  } Notice that I never made a new instance of the Words object using Words(), but keep in mind that even after populating the labels, your singleton Words object still lives and will continue living its long life until you terminate the app. Now let’s try doing the same thing without the singleton object. This is what your Words object will look like: import Foundationstruct Words {   var firstWord = "Church"    var secondWord = "Palace"    var thirdWord = "Castle" } Much cleaner and simpler, right? Now, how do I use this object to populate the labels? I need to make a new instance of the Words object every time I want to use it. Here is what the ViewController will look like: import UIKitclass ViewController: UIViewController {   var firstLabel = UILabel()     var secondLabel = UILabel()     var thirdLabel = UILabel()   override func viewDidLoad() {        super.viewDidLoad()     }   override func viewDidAppear(_ animated: Bool) {        super.viewDidAppear(animated)      firstLabel.text = Words().firstWord        secondLabel.text = Words().secondWord        thirdLabel.text = Words().thirdWord     }  } Here you can notice that every time you need a property of an object,  you are making a new instance of that object using Words() . This way, you are using the memory constantly, but only when you need it, and after you have used it, the memory will be freed for usage in the future. Singletons were popular in the Objective C era. However, they are not always a great solution, so use them only if you have to. They also make debugging and unit testing very hard. As always, I hope this helps, and happy coding. Cheers! Filip Varda He pays attention to the smallest details and makes sure our mobile applications work. If you need to talk about the newest mobile trends or gadgets, he’s the guy to go to. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 15, 2022 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 15, 2022 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # iOS Widgets - Get Your Timely Information From Your Favorite Apps at a Glance - Tech Consulting and Software Engineering URL: https://q.agency/blog/ios-widgets/ Learn how to build iOS widgets with SwiftUI and display timely app information directly on the Home Screen, with a practical step-by-step tutorial. iOS Widgets - Get Your Timely Information From Your Favorite Apps at a Glance | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > iOS Widgets – Get Your Timely Information From Your Favorite Apps at a Glance iOS Widgets – Get Your Timely Information From Your Favorite Apps at a Glance July 15, 2021 — 17 min read A widget is part of an app that displays select information on the Home Screen so the user doesn’t need to open the associated app to find it. Widgets keep track of changes within an app, giving users access to the latest information. If users want details, the widget can transfer them right to the associated app. Widgets can be static or dynamic, meaning that you can either present data that will never be updated or some data that gets updated any time you want. Without any further ado, let’s start by building a simple app that will generate a new quote on swipe. Start by creating a new Xcode project. Select App and then Next. Name the project as you like. I named mine “WidgetApp“ for the sake of this tutorial. Click next, choose where you wish to save your project, and let’s start coding. First, we will remove all SwiftUI files and configurations from our app because we don’t need them at the moment. We will only use SwiftUI for our widget. To do so, you should do the following: If there is a scene delegate class, remove it Completely remove the Application Scene Manifest entry from Info.plist If there are any scene-related methods in your app delegate, remove those methods If missing, add the property var window: UIWindow? to your app delegate After that is done, we can continue building our app. We will use only one UIViewController with simple UIImageView and two UILabels. Open your Main.storyboard file and add the elements to the screen. Use constraints to make the UIImageView cover the whole screen. After that, you can place the UILabel in the center of the screen with some spacing from the left and right edges of the screen. For the sake of this tutorial I made the UILabel’s height equal to 150, but if you wish you can make it resizeable. Now add another UILabel below the first one, but make it much smaller because this will be used to display the author’s name. You can design your controller however you want, I just found this to be easy and good-looking. Create the Outlets for your elements, connect them and your UIViewController (in my case that is MainController) and you should end up with something like this: Let’s done some work in code. We will need two arrays on our ViewController. Those arrays will contain images that will be set as background and quotes that will be presented on screen. var arrayOfImages = [UIImage]() var arrayOfQuotes = [Quote]() You will notice that there is an array of Quote objects. We will need this since our Quote object will contain 2 properties, the quote’s text and the author of the quote. Create a file named Quote.swift and in there create a structure Quote that comforts the Codable protocol (we will need it later): import Foundation struct Quote: Codable {    var text = ""    var authorName = "" } We will need a view model for our app since we are going to mock all the data for simplicity. Create a QuoteViewModel.swift file. In that file there will be two properties again: import Foundation import UIKitclass QuoteViewModel: NSObject {   var quotes: [Quote] = [Quote(text: "Talent is given, greatness is earned.", authorName: "– Vivian Greene"),    Quote(text: "Don’t let someone else’s opinion of you become your reality.", authorName: "– Vivian Greene"),    Quote(text: "Listen, smile, agree and then do whatever you were going to do anyway.", authorName: "– Napoleon Hill"),    Quote(text: "Never let a bad day make you feel like you have a bad life.", authorName: "– Vivian Greene"),    Quote(text: "The person who says something is impossible should not interrupt the person who is doing it.", authorName: "– Vivian Greene"),    Quote(text: "It is never too late to be what you might have been.", authorName: "– Napoleon Hill"),    Quote(text: "Great minds discuss ideas. Average minds discuss events. Small minds discuss people.", authorName: "– Michael Jordan"),    Quote(text: "If opportunity doesn’t knock, build a door.", authorName: "– Vivian Greene"),    Quote(text: "The higher you climb the better the view.", authorName: "– Michael Jordan"),    Quote(text: "With patience you can even cook a stone. (One of the best quotes to live by)", authorName: "– Michael Jordan"),    Quote(text: "Don’t tell me the sky’s the limit when there’s footprints on the moon.", authorName: "– Vivian Greene"),    Quote(text: "Life is not measured by the amount of breaths you take, but by the moments that take your breath away.", authorName: "– Michael Jordan"),    Quote(text: "It’s important to make someone happy, and it’s important to start with yourself.", authorName: "– Napoleon Hill"),    Quote(text: "If you settle for just anything, you’ll never know what you’re truly worthy of.", authorName: "– Michael Jordan"),    Quote(text: "In life, you get what you put in. Everything comes back around.", authorName: "– Michael Jordan"),    Quote(text: "Death is not the greatest loss in life; the greatest loss is what dies inside while you’re still alive.", authorName: "– Napoleon Hill"),    Quote(text: "If you don’t like something, change it. If you can’t change it, change the way you think about it.", authorName: "– Vivian Greene"),    Quote(text: "Life isn’t about waiting for the storm to pass, it’s about learning to dance in the rain.", authorName: "– Napoleon Hill"),    Quote(text: "I know where I’m going and I know the truth, and I don’t have to be what you want me to be. I’m free to be what I want.", authorName: "– Napoleon Hill"),    Quote(text: "Dream as you will live forever, live as you will die today.", authorName: "– Napoleon Hill"),    Quote(text: "If you want something you’ve never had then you you’ve got to do something you’ve never done.", authorName: "– Napoleon Hill"),    Quote(text: "Whatever the mind of man can conceive and believe it can achieve.", authorName: "– Vivian Greene"),    Quote(text: "Some people want it to happen, some wish it would happen, others make it happen.", authorName: "– Vivian Greene"),    Quote(text: "Life is a stage and you get only one performance. Make it a good one.", authorName: "– Vivian Greene"),    Quote(text: "As long as you’re going to be thinking anyway, THINK BIG.", authorName: "– Vivian Greene"),    Quote(text: "Nothing is impossible, the word it self says I’m possible.", authorName: "– Vivian Greene"),    Quote(text: "They laugh at me because I’m dierent, I laugh at them because they’re all the same.", authorName: "– Napoleon Hill"),    Quote(text: "Don’t be afraid to give up the good to go for the great.", authorName: "– Vivian Greene"),    Quote(text: "Life is short, live it. Love is rare, grab it. Anger is bad, dump it. Fear is awful, face it. Memories are sweet, cherish it.", authorName: "– Michael Jordan"),    Quote(text: "To live is the rarest thing in the world. Most people exist, that’s all.", authorName: "– Michael Jordan"),    Quote(text: "Live life to the fullest because you only get to live it once.", authorName: "– Michael Jordan"),     Quote(text: "Do things that count, but don’t count the things you do.", authorName: "– Vivian Greene"),    Quote(text: "Begin each day with a grateful heart.", authorName: "– Vivian Greene"),    Quote(text: "Opportunity is missed by people because it is dressed in overalls and looks like work.", authorName: "– Napoleon Hill") ]   var backgroundImages: [UIImage] = [       UIImage(named: "motivation_phone_BG1")!,       UIImage(named: "motivation_phone_BG2")!,       UIImage(named: "motivation_phone_BG3")!,       UIImage(named: "motivation_phone_BG4")!,    ] } Here, I’ve added 50 quotes with their authors and some images that will be our background images. You can use the same images as I did and you can download them here . Now that that part is done, we have mocked the data that will be presented. Let’s add some more properties to our ViewController: var arrayOfImages = [UIImage]() var arrayOfQuotes = [Quote]() var presentingQuote: Quote? var presentingBackground: UIImage? These two properties will be used to store the image and the quote that we are presenting. Jump to your viewDidLoad() function. This is how mine looks like: override func viewDidLoad() {     super.viewDidLoad()     self.view.backgroundColor = .black     backgroundImageView.alpha = 0     authorLabel.alpha = 0     quoteTextLabel.alpha = 0     quoteTextLabel.numberOfLines = 0     arrayOfQuotes = QuoteViewModel().quotes     arrayOfImages = QuoteViewModel().backgroundImages     let leftGesture = UISwipeGestureRecognizer(target: self, action: #selector(updateScreen))     leftGesture.direction = .left     let rightGesture = UISwipeGestureRecognizer(target: self, action: #selector(updateScreen))     rightGesture.direction = .right     self.view.addGestureRecognizer(leftGesture)     self.view.addGestureRecognizer(rightGesture)     generateNewImage()     generateNewQuote()  } There is a bit happening here. First, we want to make the background black (because we will animate the background and quote change with fade-out/fade-in eect for smooth transitions in between) Then, we fade out our image and quote with the author, because we still haven’t populated the labels and image with data. Right after that, I’ve added two UISwipeGestureRecognizer, one for left and one for right swipe and they both have the same action updateScreen() , which we will get to in a second. Finally, we call two methods generateNewImage() and generateNewQuote() which will populate the data, and here is how they look like: private func generateNewImage() { let randomIndex = Int().randomNumber(upTo: arrayOfImages.count) let randomImage = arrayOfImages[randomIndex] presentingBackground = randomImage UIView.animate(withDuration: 1.0) { self.backgroundImageView.alpha = 0 } completion: { (bool) in self.backgroundImageView.image = randomImage UIView.animate(withDuration: 1.0) { self.backgroundImageView.alpha = 1 } } } private func generateNewQuote() { let randomIndex = Int().randomNumber(upTo: arrayOfQuotes.count) let randomQuote = arrayOfQuotes[randomIndex] presentingQuote = randomQuote UIView.animate(withDuration: 1.0) { self.quoteTextLabel.alpha = 0 self.authorLabel.alpha = 0 } completion: { (bool) in UIView.animate(withDuration: 1.0) { self.quoteTextLabel.alpha = 1 self.authorLabel.alpha = 1 } self.quoteTextLabel.text = randomQuote.text self.authorLabel.text = randomQuote.authorName } } private func generateNewImage() { let randomIndex = Int().randomNumber(upTo: arrayOfImages.count) let randomImage = arrayOfImages[randomIndex] presentingBackground = randomImage UIView.animate(withDuration: 1.0) { self.backgroundImageView.alpha = 0 } completion: { (bool) in self.backgroundImageView.image = randomImage UIView.animate(withDuration: 1.0) { self.backgroundImageView.alpha = 1 } } } private func generateNewQuote() { let randomIndex = Int().randomNumber(upTo: arrayOfQuotes.count) let randomQuote = arrayOfQuotes[randomIndex] presentingQuote = randomQuote UIView.animate(withDuration: 1.0) { self.quoteTextLabel.alpha = 0 self.authorLabel.alpha = 0 } completion: { (bool) in UIView.animate(withDuration: 1.0) { self.quoteTextLabel.alpha = 1 self.authorLabel.alpha = 1 } self.quoteTextLabel.text = randomQuote.text self.authorLabel.text = randomQuote.authorName } } You noticed that there is a function randomNumber(upTo: Int) -> Int being called. That is just a helper function that I made so everything is more readable and tidy. Here is the extension of Int with that function: extension Int {     func randomNumber(upTo: Int) -> Int {        let randomIndex = Int(arc4random_uniform(UInt32(upTo)))        return  randomIndex     }  } To sum up what is happening here; We are picking a new quote using a random index from the array, and setting its value to presentingQuote and the same thing is happening with presentingBackground . Okay, now jumping to saving the image and quote to UserDefaults, but before we do that, we need to add a new target which will be our Widget and we also need to add a new capability to our app, called App Groups. To add a new target, go to File -> New -> Target . Select Widget Extension and click Next. Name your target however you want. I named mine WidgetApp-Widget. A pop-up should present asking if you wish to activate your widget, and you are going to press Activate. For now, we won’t set our focus on our widget, but App Groups. Apps within a group can communicate with other members in the group using IPC mechanisms including Mach IPC, POSIX semaphores and shared memory, and UNIX domain sockets. In macOS, use app groups to enable IPC communication between two sandboxed apps, or between a sandboxed app and a non-sandboxed app. App groups also act as keychain access groups. In short, apps within the group can share data which is exactly what we need. Go to your project, select your WidgetApp target and click on + Capability and add App Groups. Copy your Bundle ID and in the App Groups section add a new group. You will be presented with a window for adding a new container. Paste your Bundle ID in there but don’t delete the “group.” prefix. Now do the same thing for your Widget target and you should end up with something like this: One last thing we need to do regarding saving data to UserDefaults. Go back to your ViewController, import SwiftUI and add some more properties: import UIKit import SwiftUI class MainController: UIViewController {    @IBOutlet weak var quoteTextLabel: UILabel!    @IBOutlet weak var authorLabel: UILabel!    @IBOutlet weak var backgroundImageView: UIImageView!    var arrayOfImages = [UIImage]()    var arrayOfQuotes = [Quote]()    @AppStorage("quote", store: UserDefaults(suiteName: "group.com.q-alliance.WidgetApp"))    var quoteData: Data = Data()    @AppStorage("image", store: UserDefaults(suiteName: "group.com.q-alliance.WidgetApp"))    var imageData: Data = Data()    var presentingQuote: Quote? {       get { return nil }       set {          saveQuoteToUserDefaults(quote: newValue!)       }    }        var presentingBackground: UIImage? {       get { return nil }       set {          saveImageToUserDefaults(image: newValue!)       }    } . . . . } We need SwiftUI at this moment because of the property wrapper @AppStorage . We will use these to save the image and quote data for our widget. You noticed that there are two new functions, saveQuoteToUserDefaults(quote: Quote) and saveImageToUserDefaults(image: UIImage) . Here is how they look and what they do: private func saveQuoteToUserDefaults(quote: Quote) {     guard let quoteData = try? JSONEncoder().encode(quote) else { return }     self.quoteData = quoteData  }  private func saveImageToUserDefaults(image: UIImage) {     guard let imageData = image.jpegData(compressionQuality: 0.7) else { return }     self.imageData = imageData  } Okay, so, saveImageToUserDefaults() compresses the image, encodes the image jpeg data, and saves it to imageData property which is AppStorage property. The same thing happens with our Quote object, and if you remember that is what our structure Quote inherits from Codable protocol. At this point, we are done with our app, and we can jump into our Widget code. Go to your widget file, and delete everything: We will start with a new structure: struct Provider: TimelineProvider {     typealias Entry = QuoteEntry  } This structure is a TimelineProvider, which means that this is what tells the app’s widget when they need to be updated again. Entry type is what actually holds the data and any other data that is needed to populate our Widget. We are going to create our own QuoteEntry: struct QuoteEntry: TimelineEntry {     let date = Date()     let quote: Quote     let image: UIImage  } As you can see, this is not working because our Quote object is not pointing to our extension target. Go back to our Quote.swift file and set target membership to the extension target. Now you can go back to Widget extension and try to build the project. We can now add some more properties and functions to our Provider. Here is how it should look like: struct Provider: TimelineProvider {     typealias Entry = QuoteEntry     @AppStorage("quote", store: UserDefaults(suiteName: "group.com.q-alliance.WidgetApp"))     var quoteData: Data = Data()     @AppStorage("image", store: UserDefaults(suiteName: "group.com.q-alliance.WidgetApp"))     var imageData: Data = Data()     func getSnapshot(in context: Context, completion: @escaping (QuoteEntry) -> Void) {        guard let quote = try? JSONDecoder().decode(Quote.self, from: quoteData) else { return }        guard let image = UIImage(data: self.imageData) else { return }        let entry = QuoteEntry(quote: quote, image: image)        completion(entry)     }     func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) {        guard let quote = try? JSONDecoder().decode(Quote.self, from: quoteData) else { return }        guard let image = UIImage(data: self.imageData) else { return }        let entry = QuoteEntry(quote: quote, image: image)        let timeline = Timeline(entries: [entry], policy: .atEnd)        completion(timeline)     }  func placeholder(in context: Context) -> QuoteEntry {        let exampleQuote = Quote(text: "This is example text", authorName: "- Author")        guard let quote = try? JSONDecoder().decode(Quote.self, from: quoteData) else { return QuoteEntry(quote: exampleQuote, image: UIImage(named: "motivation_phone_BG1")!) }        guard let image = UIImage(data: self.imageData) else { return QuoteEntry(quote: exampleQuote, image: UIImage(named: "motivation_phone_BG1")!) }        let entry = QuoteEntry(quote: quote, image: image)        return entry     }  } There is a lot of things happening here, so let’s get to it. First, we have some properties that you have already seen in the ViewController code. These properties are data that is being saved in the UserDefaults, that is Quote data and UIImage data. The func getSnapshot(in context: Context, completion: @escaping (QuoteEntry) -> Void) is using our new QuoteEntry as you can see, and this is the function that will be used to get a quick render of the Widget. I believe that this is the function that renders our Widget in our App Library. Here we are decoding the image and the quote data from UserDefaults and creating an entry that we return at the end of the function. func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) is a method that is specifically made to update your widget with new data. In this tutorial we are making a static widget, but with a small hack that makes it dynamic. Let me explain: In this method, we are decoding the data again, then creating an entry and then a timeline. Here is the trick, let timeline = Timeline(entries: [entry], policy: .atEnd) as you can see, there is an argument named policy, which decides when the widget will be updated. With this set to .never , our widget would be completely static, but since we are using .atEnd this means that our widget will be updated every time our app closes, and as you know, every time a quote is changed in the app with our swipe gesture, new data is being saved to UserDefaults, which means that every time you swipe, and close the app the quote you left in the app should be presented in the widget. func placeholder(in context: Context) -> QuoteEntry is pretty self-explanatory. This method is used to create a widgets placeholder. Keep in mind that you will need images to create a placeholder, that is why there is an Assests file in your Widget group. I used the same images as I used in the app. Now that we have data that is going to be passed around, its time to create views, that is, how our Widget is going to look like. If you check the documentation you should have a placeholder view that should present on the lock screen. I wasn’t able to test this, but you most certainly must have one. struct PlaceholderView: View {     let quote = Quote(text: "This is example text", authorName: "- Author")     var body: some View {     Text(quote.text)        .font(.largeTitle)        .padding()       .background(Color.black)     }  }  struct WidgetEntryView: View {     let entry: Provider.Entry     var body: some View {        Text(entry.quote.text)           .font(.body)           .fontWeight(.bold)           .foregroundColor(.white)           .shadow(color: .black, radius: 20, x: 0.0, y: 0.0)           .multilineTextAlignment(.center)           .background(              Image(                 uiImage: UIImage(data: entry.image.pngData()!)!              )           .aspectRatio(contentMode: .fill)           )     }  } The other one is our WidgetEntryView, which renders the widget with data that is passed from the app. You can see that the entry is Provider.Entry, that is, QuoteEntry which was defined with typealias Entry = QuoteEntry . You can see that we use properties of our entry such as here: uiImage: UIImage(data: entry.image.pngData()!)! Now we need to put all that stu together, and we can do that with another struct. Here is how it looks like: @main struct QuoteWidget: Widget {    private let kind = "Quote_Widget"    var body: some WidgetConfiguration {       StaticConfiguration(kind: kind, provider: Provider()) { entry in          WidgetEntryView(entry: entry)       }    } } We mark the QuoteWidget with @main so that our extension knows that this is the main function that needs to be called. You can see that the kind is a string with a name “Quote_Widget” and we have a StaticConfiguration because our widget is static, not dynamic. Our configuration has a few arguments, our kind, provider, and entry. What this does is basically when the entry is passed, our WidgetEntryView is going to be populated with that data, rendered and presented. Try to build and run the app and then the widget to see if everything works. To place a widget on your home screen, press and hold on the screen, in the top left corner press the “+” icon, and scroll down to the bottom of the list. You should see the WidgetApp there, press, and select the widget that you wish to use. Here is how mine looks like: That’s it! Here is a link to a complete project on git. Hope it helps. Cheers! Filip Varda He pays attention to the smallest details and makes sure our mobile applications work. If you need to talk about the newest mobile trends or gadgets, he’s the guy to go to. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 15, 2021 — 17 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 15, 2021 — 17 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI De [truncated] ======================================================================== # Prepare for the ISTQB Certification - Tech Consulting and Software Engineering URL: https://q.agency/blog/istqb-certification/ The Foundation Level qualification (ISTQB) is suitable for anyone who needs to demonstrate practical knowledge of the fundamental concepts of software testing Prepare for the ISTQB Certification | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Prepare for the ISTQB Certification Prepare for the ISTQB Certification June 20, 2022 — 4 min read ISTQB ® (International Software Testing Qualifications Board) is a not-for-profit association that has become the worldwide leader in the certification of competencies in software testing . If you are searching for a new job in QA , or if you want to get a project, develop yourself further, or confirm that you are proficient and competent in the QA field, you should get the ISTQB certificate. More and more clients/companies ask for the ISTQB certificate . In some cases, the ISTQB certificate is an advantage, but in many cases, it is mandatory. ISTQB Certificates There are a bunch of certificates but first you need to pass the Certified Tester ( Foundation Level ). The Foundation Level qualification is suitable for anyone who needs to demonstrate practical knowledge of the fundamental concepts of software testing including people in roles such as testers, test analysts, test engineers, test consultants, test managers, user acceptance testers and software developers . Afterward, you have several options in which you can further develop yourself. If you aim for the position of a test manager or a test analyst, you can take one of the following certificates: Advanced level: Test manager Test analyst Technical test analyst Expert level: Test management Improving the test process If you are more interested into the agile testing you can take: Foundation level: Agile tester Advanced level: Agile technical tester Agile test leadership at scale (in beta from 2021). If you want a certificate from an Advanced/Expert level , first, you need to get a certificate from the Foundation/Advanced level . All information and requirements can be found in the syllabus for the specific certificate. If you don’t find yourself in anything from the latter, you can specialize in one of the following areas: AI testing Security tester Test automation engineer Model-based tested Usability testing Automotive software tester Gambling industry tester Mobile application testing Performance testing Acceptance testing You can see all ISTQB levels and modules on their website . How to prepare yourself for the exam In order to get a certificate, you need to be persistent and willing to give up some of your free time. First, you need to decide which certificate you want and when you will take the exam. Give yourself enough time to prepare for the exam. You can take the exam online or at the test center . If your native language is not the examination language, you are given additional time. In case you are taking an exam in the test center, first, you need to send the request for the extra time, and then you can apply for the exam. The next step is to find learning materials . You can find them on the ISTQB website . Every certificate has its own materials which you can find in the download section. The association also provides a few examples of the exam so that after you’re finished with learning, you can try to solve them and see what’s your score. You can also find learning materials on YouTube , Udemy , Pluralsight , or Scribd . You know what’s best for you and how you will learn most efficiently. Some of the platforms provide quizzes so you can practice your knowledge. You can also find examples of the exams online, on the ASTQB (American Software Testing Qualifications Board) website or you can find mobile apps which are specialized for the ISTQB exams. Conclusion If you would like to develop your career , improve your skills or increase your salary , I suggest getting an ISTQB certificate. It will also improve your and the company’s image, and finally, it will look great in your resume or LinkedIn profile. That’s proof that you are competent and willing to invest in yourself to learn new things. Give yourself enough time to prepare, and good luck! Matej Raskaj Matej is a manual tester at Q with experience in mobile and web application testing, but he is also expanding his knowledge in automation. So far, he has two ISTQB certificates, Foundation Level and Agile tester (Foundation Level). If you need a person with an excellent eye for detail, he is the right person. He loves skiing, flying with his drone, taking photos and recording videos, playing table tennis, traveling, and learning new stuff. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 20, 2022 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 20, 2022 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Lost in Legacy? Let IT Due Diligence Guide You - Tech Consulting and Software Engineering URL: https://q.agency/blog/it-due-diligence-service/ Q has established its IT Due Diligence service. Let’s dive in to see what it is and how it can help you with our skilled senior experts. Lost in Legacy? Let IT Due Diligence Guide You | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Lost in Legacy? Let IT Due Diligence Guide You Lost in Legacy? Let IT Due Diligence Guide You May 22, 2025 — 5 min read If you feel overwhelmed by your IT legacy and see the digital world as a source of constant pressure, IT Due Diligence might be exactly what you need. It’s a strategic approach designed to bring clarity, direction and control back into your IT landscape. Let’s dive deeper and see how our skilled senior experts can help you with this approach. Possibilities folding into Pressure Not so long ago, the digital world meant a world of possibilities. Today, it’s more often perceived as a world of pressure . The vastness and depth of technological opportunities still excites the bravest, but for many others, this creates a constant pressure to adapt. In the first wave of digitalisation, most companies focused on solving immediate needs by adopting isolated tools — a CRM here, a workflow platform there — sometimes without a broader digital context. As companies grew, merged, and chased market shifts, those systems didn’t always keep up. Bit by bit, legacy piled up, and many organisations find themselves relying on: Aging applications that no longer matches modern user expectations (or needs) Codebases that were never optimised for today’s best practices (or future expansion) Outdated programming languages that limit scalability and integration. So, after the pandemic, investments in digital and technology initiatives surged — not just because of opportunity, but out of fear of being left behind. According to McKinsey , companies are increasingly looking to technology as a way to strategically differentiate themselves from competitors. The Second Generation of Digital Decisions This brings us to the second generation of digital decisions. While the first generation asked, “ How do we digitalise? ”, today the more usual question is ” How do we optimise? ” – Should we maintain, renew, reuse our applications — or should we rebuild from scratch?. In many ways, it reminds of standing in front of an old building: should we renovate, reinforce, or tear it down and start fresh? The general build, borrow, or buy dilemma , reflected on the technological environment, creating a spectrum of choices — from extending what works to replacing what no longer can. Although the core of this issue is a business decision (the one that should align with a company’s priorities), the reasoning behind it is often constrained by the technical state of what’s inherited. This also sets the boundaries for what’s truly achievable. There’s rarely a single right decision in this process — but there is a right approach . It’s the approach that keeps the company competitive and prepares it for what’s ahead. What’s the name of the game? As with any good decision, we must start by defining the facts and identifying the problems . To do that, we need the right stack of questions that reveal both business and tech realities. For example: Are our development processes optimised for scalability, efficiency, and consistent quality? Is our product architecture designed to support long-term growth and adaptability? Is our system resilient against downtime, performance bottlenecks, and infrastructure failures? How maintainable and modular is our codebase according to current best practices? Are there critical areas of technical debt that could impact future development speed and stability? Are our cloud or on-premises solutions optimised for cost, performance, and scalability? Are we fully compliant with key data protection and industry regulations (GDPR, CCPA, etc.)? How robust are our security practices — including data protection, access control, and vulnerability management? How is sensitive data — both internal and client-related — managed, stored, and protected? Is the total cost of ownership (TCO) for our technology stack sustainable for the next 5–10 years? Answering such questions is an important start — but it’s just the beginning . A full assessment dives much deeper across business priorities, technical health, and future scalability. If you’re taking the first steps — good luck! And if you need a structured service and experienced partner to guide the full journey, keep reading. Q’s IT Due Diligence Service For a structured and clear path forward, Q provides IT Due Diligence service. Our senior experts , with deep experience across industries, architectures, and IT process Governance and technologies , lead a set of analysis of client systems with the goal to give actionable insights, reduce risk, and set a confident course for strategic decisions. This work is led by our Centre of Excellence — our cross-functional team that drives best practices, consolidates Q agency expertise, and ensures that Q delivers true business impact, beyond code. It includes senior Solution Architects, Business Analysts, Project Managers, and other specialists (AI experts, developers, UI/UX Designers), chosen based on the needs of each project, whose engagement usually takes place 4-8 weeks. To make sure every assessment delivers real value, we follow a few core principles that guide our work from the very first conversation, main ones being: Fast Delivery & Actionable Insights – In every assessment, it’s easy to generate endless data. We focus on delivering insights clients can act on — fast, clear, and prioritised for real-world impact. Reduced Operational and Technical Risk- We identify system risks and weaknesses as early as possible. By surfacing vulnerabilities upfront, we prioritise smarter and avoid costly surprises later. IT Due Diligence varies across Product and Development Process Assessment, Code Quality and Maintainability Review, Project management and BA practices, Performance, and Scalability Analysis, Security, Compliance, and Risk Management, IP, and Data Management, etc. The goal is to help our clients navigate complexity with confidence, based insights and tailored set of services that fit specific business, and to equip them with the clarity needed to move forward. If you’re considering your next move, we’d be glad to support you. Feel free to reach out to us! Vesna Palada Imagine three circles: Clients, Sales, and Engineering. Vesna is a Presales Engineer sitting at their intersection — bridging communication gaps by 'speaking all three languages' and crafting solutions that connect ideas with possibilities. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 22, 2025 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 22, 2025 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Java Database Integration Tests with Database Rider and Testcontainers - Tech Consulting and Software Engineering URL: https://q.agency/blog/java-database-integration-tests/ Learn how to write proper integration tests for Java database communication with Database Rider and Testcontainers. Java Database Integration Tests with Database Rider and Testcontainers | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Java Database Integration Tests with Database Rider and Testcontainers Java Database Integration Tests with Database Rider and Testcontainers April 27, 2023 — 12 min read Introduction You’ve probably come across a pull request that was successfully built, passed every test, and everything was perfect up until you pushed it to production and everything came down crashing and burning. I am, of course, exaggerating, because you wouldn’t and shouldn’t push the code directly to the production , but that’s a subject for another blog :). The developer will probably say “But it works on my machine” and maybe he would be right, but, what if he had a different version of the database on his machine than the production has? Or, what if he wrote some kind of integration tests but since the pipeline is running those tests, he chose the option to use an embedded database which again differs from the production one? All those reasons are why you should write proper integration tests which replicate the production state correctly. Of course, the question poses: how to write those integration tests ? Worry not, my friend, because, in the next few minutes, you will be able to learn how. To tackle this challenge, my weapons of choice are Database Rider and Testcontainers . Through an example with the MSSQL server database, I will show you how to create fast and reliable integration tests. Basic Setup For this particular problem, I’ve decided to use a Spring boot application with the Hibernate framework. Microsoft SQL Server is the database of choice, but at this point, it doesn’t matter which database is used, as mentioned in the introduction. For the basic setup, it’s important to include Maven dependencies : org.springframework.boot spring-boot-starter com.microsoft.sqlserver mssql-jdbc 11.2.1.jre17 org.springframework.boot spring-boot-starter-data-jpa compile org.springframework.boot spring-boot-starter-web 3.0.0 compile I will create a simple 3-layered CRUD application , with controller, service, and repository. I will have a Person model and person entity with parameters as shown in the following pieces of code. I removed getters for better readability, but you should include them in your code: package com.example.dbriderandtestcontainers.model; import javax.persistence.Column; import javax.persistence.Id; import java.util.UUID; public class PersonModel { private UUID id; private String name; private String surname; private String username; private Long age; private Boolean eligible; public PersonModel(UUID id, String name, String surname, String username, Long age, Boolean eligible) { this.id = id; this.name = name; this.surname = surname; this.username = username; this.age = age; this.eligible = eligible; } } package com.example.dbriderandtestcontainers.entity; import org.hibernate.annotations.Type; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import java.util.UUID; @Entity @Table(name = "Person", schema = "dbo") public class PersonEntity { @Id @Column(name="ID") @Type(type = "uuid-char") private UUID id; @Column(name = "Name") private String name; @Column(name = "Surname") private String surname; @Column(name = "Username") private String username; @Column(name = "Age") private Long age; @Column(name = "Eligible") private Boolean eligible; public PersonEntity(UUID id, String name, String surname, String username, Long age, Boolean eligible) { this.id = id; this.name = name; this.surname = surname; this.username = username; this.age = age; this.eligible = eligible; } public PersonEntity() { } } A mapper between those two models is also needed: package com.example.dbriderandtestcontainers.util; import com.example.dbriderandtestcontainers.entity.PersonEntity; import com.example.dbriderandtestcontainers.model.PersonModel; public class PersonConverter { public static PersonModel toPersonModel(PersonEntity entity) { return new PersonModel( entity.getId(), entity.getName(), entity.getSurname(), entity.getUsername(), entity.getAge(), entity.getEligible() ); } public static PersonEntity toPersonEntity(PersonModel personModel) { return new PersonEntity( personModel.getId(), personModel.getName(), personModel.getSurname(), personModel.getUsername(), personModel.getAge(), personModel.getEligible() ); } } To help me mock the random UUID generation (since I am using it as an ID in my model), I’ve created the UUID generator which will be easier to mock in the tests: package com.example.dbriderandtestcontainers.util; import org.springframework.stereotype.Component; import java.util.UUID; @Component public class UuidGenerator { public UUID generateUuid() { return UUID.randomUUID(); } } After I’ve created the models and their utility, I will create the repository layer : package com.example.dbriderandtestcontainers.repository; import com.example.dbriderandtestcontainers.entity.PersonEntity; import org.springframework.data.repository.CrudRepository; import java.util.UUID; public interface PersonRepository extends CrudRepository { } After the repository layer, the Service layer is created: package com.example.dbriderandtestcontainers.service; import com.example.dbriderandtestcontainers.util.PersonConverter; import com.example.dbriderandtestcontainers.entity.PersonEntity; import com.example.dbriderandtestcontainers.model.PersonModel; import com.example.dbriderandtestcontainers.repository.PersonRepository; import com.example.dbriderandtestcontainers.util.UuidGenerator; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; @Service public class PersonService { private PersonRepository personRepository; private UuidGenerator uuidGenerator; public PersonService(PersonRepository personRepository, UuidGenerator uuidGenerator) { this.personRepository = personRepository; this.uuidGenerator = uuidGenerator; } public PersonModel createPerson(PersonModel personModel) { personModel.setId(this.uuidGenerator.generateUuid()); return PersonConverter.toPersonModel( this.personRepository.save(PersonConverter.toPersonEntity(personModel))); } public List getAllPersons() { List personModels = new ArrayList<>(); for (PersonEntity personEntity : this.personRepository.findAll()) { personModels.add(PersonConverter.toPersonModel(personEntity)); } return personModels; } public PersonModel updatePerson(PersonModel personModel) { Optional entity = this.personRepository.findById(personModel.getId()); if (entity.isPresent()) { return PersonConverter.toPersonModel( this.personRepository.save( PersonConverter.toPersonEntity(personModel))); } throw new IllegalArgumentException(); } public void deletePerson(UUID personId) { Optional entity = this.personRepository.findById(personId); if(entity.isPresent()) { this.personRepository.deleteById(personId); } } } And, to complete the 3 layer architecture, the Controller : package com.example.dbriderandtestcontainers.controller; import com.example.dbriderandtestcontainers.model.PersonModel; import com.example.dbriderandtestcontainers.service.PersonService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.UUID; @RestController @RequestMapping("/person") public class PersonController { private final PersonService personService; public PersonController(PersonService personService) { this.personService = personService; } @PostMapping public ResponseEntity createPerson(@RequestBody PersonModel personModel) { return ResponseEntity.ok(this.personService.createPerson(personModel)); } @GetMapping public ResponseEntity> getAllPersons() { return ResponseEntity.ok(this.personService.getAllPersons()); } @PutMapping public ResponseEntity updatePerson(@RequestBody PersonModel personModel) { return ResponseEntity.ok(this.personService.updatePerson(personModel)); } @DeleteMapping("/{person-id}") public ResponseEntity deletePerson(@PathVariable("person-id") UUID personId) { this.personService.deletePerson(personId); return ResponseEntity.ok(null); } } But, of course, this is not the end. I still don’t have the application to start all of my code with: package com.example.dbriderandtestcontainers; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } And, finally, I need to setup my application with some properties to make the connection with the database through Hibernate work: spring: datasource: url: jdbc:sqlserver://localhost:1433;databaseName=YOURDBNAME;encrypt=true;trustServerCertificate=true; username: YOURUSER password: YOURPASSWORD driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver jpa: properties: hibernate: dialect: org.hibernate.dialect.SQLServer2008Dialect Now that the application is created, let’s go and write some integration tests ! Testcontainers Testcontainers for Java is a Java library that supports JUnit tests, providing lightweight throwaway instances of anything that can be run in a Docker container. The advantage of this is, the production database can be dockerized (or an official docker image for the database version needed can be used) and simply start a container containing (pun intended) the same type of database used in production. Let’s see what all of this stuff looks like in code! Firstly, I will add testcontainer dependency into the pom.xml: org.testcontainers mssqlserver 1.17.6 test If I wanted to use a generic testcontainer, or some kind of a different container that the Testcontainer library has the implicit support of, I would just change the Maven dependency . After adding the dependency, I will create a connection to the database. Since I am using the official database image without tables, I have to “tell” Hibernate to create the tables on the testcontainer. I will write this into the test configuration: spring: datasource: url: "jdbc:sqlserver://localhost:33333" username: SA password: A_Str0ng_Required_Password driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver jpa: hibernate: ddl-auto: update generate-ddl: true The username and password are set to the default values (username: SA , password: A_Str0ng_Required_Password ) since it was not really important for this blog, but this can be changed in testcontainer configuration as well. The datasource URL is not important in any case since it needs to be planted with the port value of the newly created testcontainer. Also, MSSQL requires to accept license so I will create a file that will simulate that: mcr.microsoft.com/mssql/server:2017-latest Now that the environment is set up for the testcontainer, it can be created in the test: @SpringBootTest @ActiveProfiles("test") class ApplicationTests { static { DockerImageName myImage = DockerImageName.parse("mcr.microsoft.com/mssql/server:2017-latest") .asCompatibleSubstituteFor("mcr.microsoft.com/mssql/server"); MSSQLServerContainer database = new MSSQLServerContainer(myImage); database.start(); System.setProperty("spring.datasource.url", database.getJdbcUrl()); } } I’ve created a new static block to start the container since it’s easier (and faster) to use it that way. If I have more than one integration test, it’s best to separate the testcontainer into a class, start it as a static block, and then extend this class so that it’s not necessary to get through the trouble of starting the testcontainer for each test separately. In this static block, I’ve first swapped the image name for the testcontainer (so that it’s an MSSQL 2017 image, not the latest version). When I got the image name, I started the MSSQL container. Finally, the last line swaps the URL which I’ve set in the application.yml with the real URL of the testcontainer which was created. After running this piece of code, the first run will be the slowest since the docker image needs to be downloaded . After the application is started in test mode, it can be paused to check that the docker image was started, as shown in this image: Test in debug mode to show that the container is up and running Don’t be afraid if you see the testcontainers/ryuk container, this is perfectly normal :). Ryuk is used to manage the testcontainers and it will also be shut down after the test is executed. After confirming that the testcontainer is working, it’s time to find out how to insert data into that container and assert it in a few easy steps with Database Rider. Database Rider Database Rider is a Java library which integrates JUnit and DBUnit through JUnit rules. Thanks to this integration, it’s easy to prepare database data for tests using yaml , xml , json , xls , or csv files. I will show you how to create database data and assert it using this library. The first thing to do is, of course, add a Maven dependency : com.github.database-rider rider-junit5 1.35.0 test I’ve used Database Rider for JUnit5 since we are testing with JUnit5. Now that Database Rider is available in the codebase, I will add a @DBRider annotation to the test class to let the test know I will use it for filling the database: @SpringBootTest @ActiveProfiles("test") @DBRider class ApplicationTests { } I can now begin inserting the data which will be set in a .yml file for the purpose of this blog. The data must look like this: PERSON: - ID: "5a8d68c8-2f28-4b53-ac5a-2db586512438" NAME: "Random" SURNAME: "Lady" USERNAME: "DiCaprioGF" AGE: 25 ELIGIBLE: 1 The first row is the table name, after that, I need to put the dash(“-”) sign indicating the object which is part of a list (this is a convention for .yml files). After the dash, I will list the columns and their values to show what exactly will be inserted into the table. If I wanted to add another row of data , I would just add another dash with the column data filled. The point of the test should be asserting the state of the database after the test was run (for instance, if I want to test the update endpoint , I must assert that the data in the database really changed). For that purpose, I will create another file that will represent how the database should look after the update was run: PERSON: - ID: "5a8d68c8-2f28-4b53-ac5a-2db586512438" NAME: "Random" SURNAME: "Lady" USERNAME: "DiCaprioGFNoMore" AGE: 26 ELIGIBLE: 0 Okay, now I’ve created some files containing data that should be inserted at the beginning of the test and some data which is expected at the end of the test. The question now poses: How do I make this test happen ? Well, the answer is pretty simple: using annotations. Keep in mind that the .yml files which are being used in this blog should be saved in the resource folder of the project. To use the .yml as the database state, I just need to use the @DataSet annotation with the name of the file to use. Similar to the @DataSet annotation, there exists a @ExpectedDataSet annotation that will point to the file of the expected dataset (makes sense, right?). I will annotate the test method and I am good to go! The test method should look like this: @Test @DataSet("example-data.yml") @ExpectedDataSet("example-expected.yml") void dataShouldBeUpdatedInTheDatabase() { this.personController.updatePerson( new PersonModel( UUID.fromString("5a8d68c8-2f28-4b53-ac5a-2db586512438"), "Random", "Lady", "DiCaprioGFNoMore", 26L, false ) ); } Just to make sure the data is inserted correctly at the beginning of the test, the database should be checked during the test. For that reason, I will debug the test and stop the execution before the first line of the test method body is called. The data from “ example-data.yml ” should be visible in the database table. After running the test with Database Rider, the inserted data in the database is visible Tips & Tricks Here are some tips&tricks I learned using these two libraries in combination: As mentioned above in the “Testcontainers” section, it’s best to create and run the container only once. Multiple containers running and stopping takes a lot of time so it’s best to use only one container and keep it alive until the end of all integration tests. Since a single container is used for each test, the database should be cleaned after every test, not to mess with the other tests execution. It’s best to have a clean slate with each new test. It’s best to mock the id generators (like, for instance, UUID.generateUUID() method) because you have control over this method in the test and you can test more thoroughly . This is more of a testing tip in general, but it really finds its usage when testing on the database. If you find yourself in a pickle with Database Rider, read their documentation . It’s very detailed and I personally always found an answer on every trouble I had with their library. Conclusion In this blog, I’ve shown how to reproduce your production database environment in an integration test. I’ve also shown you how to create a database state , and how to easily assert it in a test. The full code (with some additional tests) is on GitHub . Happy coding! Ivan Kliman Ivan Kliman is a Java software engineer at Q agency. He has over 4 years of experience with various technologies, mostly Spring and its ecosystem. He has experience with thorough testing, DDD and IoT. In his free time, he is taking care of his dog Kazimir and participates in pub quizzes. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 27, 2023 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 27, 2023 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Java Script #51 meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/java-script-51-meetup/ JavaScript Meetup in Zagreb, where developers gathered to explore JavaScript and exchange knowledge with the local tech community. Java Script #51 meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Java Script #51 meetup Java Script #51 meetup October 28, 2019 — 2 min read Meet up for those interested in all things JavaScript . Client-side, server-side, we love it all! Last week we had Java Script Meetup in our Zagreb oice. It was a full house of inquisitive minds. Matija Marohnić held the first talk,  and the subject was “React Hooks” “I’ll start by explaining how we used to solve problems like managing internal state and adding side-eects, and how we can significantly simplify our code with hooks. I’ll also talk about how to correctly optimize performance and avoid common pitfalls. Finally, I’ll touch on some controversies around class components and hooks.” Ante Tomić was next with the topic “Introduction to modern Web development with Webpack 4” “Are you familiar with developing apps and having to be careful to “include that script before your own because the application won’t work”? Or have you ever used Webpack or similar solutions and wondered how they work? Here we will explore the concepts necessary to build an application form no setup code to the most common Webpack concepts. We will also see how Webpack relates to the other popular solutions like Parcel or task runners such as Gulp or Grunt, and say a few words about Webpack 5 and what is next to come.” The value that tech meetups provide oers innumerable benefits to you as a business owner or web developer. Taking advantage of these networks can go a long way in helping you achieve your professional and personal goals. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 28, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 28, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Laravel Notifications: Mail & Database - Tech Consulting and Software Engineering URL: https://q.agency/blog/laravel-notifications-mail-database/ In this blog post, we'll show you how to implement mail and database notifications in Laravel as well as how to create and send them. Laravel Notifications: Mail & Database | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Laravel Notifications: Mail & Database Laravel Notifications: Mail & Database August 21, 2023 — 9 min read Let’s delve into the world of Laravel, a powerful PHP framework, to explore mail and database notifications and learn how to implement them. In this blog post, we’ll also cover how to create and send these notifications. Laravel is a popular PHP web framework, created by Taylor Otwell. It provides developers with a large range of tools and features that help with building modern websites. One of these features is the Laravel notification system, which we will be covering today. We’ll be focusing on database and mail notifications. Technical requirements: 1. PHP 8.1 2. MySQL 8.0 3. Laravel 10 Project Setup First, we will need to create a new Laravel project: composer create-project laravel/laravel laravel-notifications We will also be using Laravel Sail which is a lightweight CLI for dealing with the Laravel Docker environment. Sail is optional, you can just proceed without it. The difference will be that instead of using the sail prefix in commands, you’ll use the php prefix. Sail is already added, so we only need to run: php artisan sail:install After running Sail installation, it’s going to ask us a question about which services we would like to install. We will pick MySQL but you can pick any that Sail offers. Let the Sail build run, and once it’s successful we have our Sail project setup. We only need to run this in our project directory: ./vendor/bin/sail up Since we are going to be sending notifications on the registration of users, we will be using Laravel Breeze as our starter kit to provide authentication. This will give us authentication out of the box, so we don’t need to create our own. For configurating Breeze we need to run: composer require laravel/breeze --dev After we install Breeze, it will ask us some configuration questions, these are not important as you can use notifications in this tutorial with any of the Breeze stacks. So you can pick whichever you want. Which stack would you like to install? Blade . Would you like to install dark mode support? Yes. Would you prefer Pest tests instead of PHPUnit? No. After installation is complete, we only need to run commands to finish breeze installation: sail artisan migrate sail npm install sail npm run dev Mail Notifications Starting with mail notifications, we first need to set up send mail configuration in our environment file. For caching our test mails, we will be using Mailtrap , but you can use any service you want. This is how our configuration should look in .env file: MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" MAIL_MAILER=smtp MAIL_HOST=sandbox.smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=username MAIL_PASSWORD=password MAIL_ENCRYPTION=tls For mail notifications, we are going to create a notification to send a welcome mail to the users when they register for an account. For creating notifications we use the make:notification command, with the name of the notification. This will create a notification folder in our app directory with the created notification. Let’s create our first notification: sail artisan make:notification WelcomeNotification Let’s go over our newly created WelcomeNotification . Firstly, we have the via() method, in which we specify what channel we are going to be using to send the notification. This includes mail, database, Slack, SMS, or any community channel. We can also add custom channels ourselves. We can specify more than one channel, or using the $notifiable, we can specify some custom conditions to determine which channel will the notification be sent to. public function via(object $notifiable): array { return ['mail']; } or public function via(object $notifiable): array { return $notifiable->prefers_mail ? ['mail'] : ['mail', 'database']; } We also have the toMail and toArray methods. We will use these methods to configure what to send when we notify. public function toMail(object $notifiable): MailMessage { return (new MailMessage) ->line('The introduction to the notification.') ->action('Notification Action', url('/')) ->line('Thank you for using our application!'); } public function toArray(object $notifiable): array { return [ // ]; } Since we are focusing on mail notifications, we need to define a toMail method that returns a MailMessage instance. We can customize a lot of information, like specifying from, subject, greeting, lines, and calls to action. We can even attach one or multiple files as well as add tags and metadata. If we need to customize the Laravel mail template provided, we can do so by publishing the package resources: php artisan vendor:publish --tag=laravel-notifications For now, we will only be sending a mail message, for which we only need to specify mail in the via method. For the message, we will add a form address, subject, greeting, and line. We will also add a call to action which will lead to the dashboard of our application. This call to action will render a button in our mail, which will take us to the defined URL. public function __construct() { // } public function via(object $notifiable): array { return ['mail']; } public function toMail(object $notifiable): MailMessage { return (new MailMessage) ->from('welcome@example.com', 'Welcome') ->subject('Welcome notification.') ->greeting(sprintf('Hello %s!', $notifiable->name)) ->line('Welcome to our app!') ->action('Visit dashboard', url('/dashboard')); } To send the notifications, there are two ways, one is by using the notify method specified in the Notifiable trait, which is being used by our User model. And the other is by using the notification facade. We will be using the first method as our User model is already using the notifiable trait. So in our ControllersAuthRegisteredUserController we can add the notify call after auth login. public function store(Request $request): RedirectResponse { // code Auth::login($user); $user->notify(new WelcomeNotification()); // code } We can test it now, and if we register with a new account, we will get the welcome mail in our testing Mailtrap inbox. Database Notifications One other option is to save the notification to the database. This is useful when we want to display notifications to our users in our app interface. To use database notifications, we first need to create a table to hold the notifications in the database. To do that, we only need to run: sail artisan notifications:table sail artisan migrate Laravel will then create the notifications table in our database of choice. Let’s go over some of the columns that were created. We will have the type of notification, in our example, this will be the NewPostCreatedNotifications . The Notifiable type is the User model, with the notifiable id which is our User id. In the data column, we will be saving the data from our notification as encoded JSON. And lastly, we have the read-at column which we can use to mark the notification as read by the user. Before we create our database notification we will need some setup, as we will be sending a notification to users’ followers after the user creates a post. To do this, let’s first create a post and followers table migration: sail artisan make:migration create_posts_table sail artisan make:migration create_followers_table // Posts table public function up(): void { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); $table->string('title', 255); $table->text('body'); $table->timestamps(); }); } // Followers table public function up(): void { Schema::create('followers', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('followed_id'); $table->foreign(‘followed_id’)->references('id')->on('users'); $table->unsignedBigInteger('follower_id'); $table->foreign('follower_id')->references('id')->on('users'); $table->timestamps(); }); } sail artisan migrate Now let’s create a database seeder so that we have some test data. We will create a seeder that creates one main user and three follower users. For creating a seeder we need to run: sail artisan make:seeder FollowerSeeder But before we do this, let’s add the follower’s relationship to the user class. public function followers(): BelongsToMany { return $this->belongsToMany(User::class, 'followers', 'followed_id', 'follower_id'); } In the seeder, we will create a main user, with which we can log in so we need to make sure the mail is unique. public function run(): void { $mainUser = User::factory()->create([ 'email' => 'admin@admin.com', ]); $followers = User::factory()->count(3)->create(); $mainUser->followers()->sync($followers->pluck('id')); Let’s seed the database with our users: sail artisan db:seed --class=FollowerSeeder Now let’s create a post controller and a model so that we can send the notification to notify our followers about a new post. sail artisan make:model Post sail artisan make:controller PostController Finally, let’s make the notification, in this case, it will be called NewPostCreatedNotification. sail artisan make:notification NewPostCreatedNotification Now let’s configure our new notification. We will pass a post to the notification so that we can notify which post was created. We will also set the via method to the database. And we will configure the toArray method to save the title of the post to the database in the data column. We can use the toArray or toDatabase methods to save data in the database, the difference is that the toArray method is also used for broadcasting to your frontend. We can also use both of these methods if we have a difference in what we want to broadcast and what to save in the database. For now, we will only be using the toArray method. public function __construct(private Post $post) { // } public function via(object $notifiable): array { return ['database']; } public function toArray(object $notifiable): array { return [ 'title' => $this->post->title, ]; } This time, to send our notification we will be using the notification facade. The difference is that it’s used mainly when you need to send a notification to a collection of users. Which is the case here. Let’s send our notification in the PostController : public function store(Request $request): RedirectResponse { $post = new Post(); $post->user_id = Auth::user()->id; $post->title = $request->title; $post->body = $request->body; $post->save(); $followers = Auth::user()->followers; Notification::send($followers, new NewPostCreatedNotification($post)); return back()->with('success', 'You created a new post!'); We will create a new post, get authenticated users’ followers, and send the notification to them. That’s it, if we check our database we will see the new entries with the post title in our data column. Another thing to cover is accessing the notifications, we can do that easily because of the Notifiable trait in our User model, which offers methods of accessing the notifications via eloquent relationships. Here are some methods for access in our Notifiable trait: // Get all notifications $user->notifications // Get unread notifications $user->unreadNotifications // Mark all user notifications as read $user->unreadNotifications->markAsRead(); // Delete all user notifications $user->notifications()->delete(); Conclusion And there it is, we covered mail and database notifications, with this being just a small overview of the Laravel notifications system. Laravel offers even more notifications like SMS, Slack and, not to forget all the custom community channels . Ena Ivanusic Ena is a Backend Developer with around 4 years of experience, mainly with Laravel and Symfony. In her free time she enjoys reading, watching crime TV shows, and spending time with her dog Tili. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 21, 2023 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 21, 2023 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Laravel Queues Deployment - Tech Consulting and Software Engineering URL: https://q.agency/blog/laravel-queues-deployment/ How should Laravel queues be deployed to production? Why should you use a supervisor? This blog will also cover topics of Redis and Laravel Horizon. Laravel Queues Deployment | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Laravel Queues Deployment Laravel Queues Deployment December 6, 2025 — 9 min read How should Laravel queues be deployed to production? What is and why should you use a supervisor? This blog will also cover topics of redis and Laravel horizon . In a previous blog we have explained queues, jobs and workers. But when it comes to deployment of Laravel queues , you shouldn’t use artisan commands directly inside the terminal to start your workers. The idea of workers is to process all queued jobs. Let’s create a simple example of how a worker could stop processing a queue. If you remember from the previous blog , inside jobs you could add the $timeout property which is the maximum number of seconds for processing a job. Let’s take a look at job which simulates processing timeout: class TimeoutJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public int $timeout = 1; public function handle(): void { sleep(8); info('This code will never be reached, worker will exit (process will be killed)'); } } To start a queue worker run the following artisan command: php artisan queue:work If you take a look in terminal output you can see the job marked as failed, but also the status is “Killed” which means our worker has exited with an error (process is killed). Although new upcoming jobs will be dispatched to the queue, there will be no workers that would handle processing jobs of that queue. You would have to manually run this command again to start a worker. Next, let’s introduce the supervisor and its configuration. Deployment – Supervisor Configuration As we know in order to process Laravel queues (queue jobs) we need queue workers to be constantly running in the background. When we started the queue worker process we used php artisan queue:work or php artisan queue:listen commands. When it comes to deployment , although the same could be done in production there could be issues with following this approach. Queue workers’ processes may stop running for a variety of reasons, such as an exceeded worker timeout or the execution of the php artisan queue:restart command. There is a better and recommended way of keeping queue workers running even if they fail (exit) – using a process monitor. Supervisor is a process monitor that allows its users to control a number of processes on UNIX-like operating systems. Firstly you will have to install supervisor , for Ubuntu in your terminal run the following command: sudo apt-get install supervisor Supervisor configuration files are usually stored at /etc/supervisor/conf.d directory. In that directory we have to create supervisor configuration file, let’s call it laravel-worker.conf , so run following command: sudo nano /etc/supervisor/conf.d/laravel-worker.conf The content of that file could look like following: [program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /home/user/app.com/artisan queue:work --queue=default autostart=true autorestart=true stopasgroup=true killasgroup=true numprocs=2 redirect_stderr=true stdout_logfile=/home/user/app.com/worker.log stopwaitsecs=3600 * Change /home/user/app.com to your path in command , and stdout_logfile . Detailed explanation of configuration can be found in official supervisor documentation . Let’s summarize: [program:laravel-worker] – represents a homogeneous process group, named laravel-worker , numprocs – number of processes for command (in our case it specifies number of workers for queue). If set to 2, it will start 2 laravel-worker processes executing the provided command . Those processes are named in the format specified in process_name . In that case processes will be named laravel-worker _00 , laravel-worker _01 . So the higher this number is processing on queue in our case will be quicker (there will be 2 workers processing the same queue), command – specify what command should be executed by supervisor processes (when supervisor is running), stopwaitsecs – ensure its value is greater than seconds that longest job takes, or supervisor may kill process before its finished, stopasgroup – send stop signal for whole process group (stop children), killasgroup – send SIGKILL to whole process group (children as well), autostart – if true program will start when supervisor is started, autorestart – automatically restart process if exists when is in RUNNING state stdout_logfile – put process stdout output in this file (and if redirect_stderr is true, also place stderr output in this file) Now all you have to do is start supervisor, detailed explanation can be found at official supervisor documentation . Firstly reload demons config files: sudo supervisorctl reread Then reload config add/remove process/groups, and restart programs: sudo supervisorctl update Lastly start all processes in a group [program:x]: sudo supervisorctl start laravel-worker:* To check processes status info run: sudo supervisorctl status Supervisor is already configured to start automatically on startup. Now if you have a valid configuration try dispatching some jobs and check your stdout_logfile which you have specified at configuration. Note: If you need to process more than one queue in parallel, create a new supervisor group [program:xy] and change command , stdout_logfile in the configuration. Also don’t forget to run previous commands and start the supervisor (xy) group. Redis and Horizon Until now we have seen how to use a database as a backend service. Now let’s quickly configure Laravel queues to use redis and setup horizon . Redis (Remote Dictionary Server) is an open source, in-memory key-value store, referred to as a data structure server because keys can contain strings, hashes, lists, sets, and sorted sets. Horizon provides a dashboard that allows you to monitor metrics of your queues. All the configuration of your queue workers is stored in a single configuration file. To use the redis driver as default for queues, set QUEUE_CONNECTION=redis in the environment file (.env). For simplicity instead of configuring phpredis PHP extension, we will use predis client . If you are installing phpredis skip following part. To install predis use the following command: composer require predis/predis Now because we are using predis instead of phpredis we need to define a redis client by setting REDIS_CLIENT=predis . Full redis configuration can be found in config/database.php . Next, to install Horizon, use following composer command: composer require laravel/horizon After that, publish its assets, service provider and configuration using following artisan command: php artisan horizon:install Let’s take a look at Horizons config file (config/horizon.php): 'path' => env('HORIZON_PATH', 'horizon'), Path option represents a web route for the dashboard. Assets for that route are present in the public/vendor/horizon folder. 'prefix' => env( 'HORIZON_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_horizon:' ), Prefix option represents a prefix of redis keys (if you have redis-cli installed, you could check its keys with keys * command). 'environments' => [ 'production' => [ 'supervisor-1' => [ 'maxProcesses' => 10, 'balanceMaxShift' => 1, 'balanceCooldown' => 3, ], ], 'local' => [ 'supervisor-1' => [ 'maxProcesses' => 3, ], ], ], Environments option is an array of environments for your application, and it defines the worker process options for each environment. So when you start horizon it uses configuration for the environment your application is running on (APP_ENV in .env file). Each environment can contain one or more supervisors, you can name them however you would like. 'defaults' => [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['default'], 'balance' => 'auto', 'maxProcesses' => 1, 'maxTime' => 0, 'maxJobs' => 0, 'memory' => 128, 'tries' => 1, 'timeout' => 60, 'nice' => 0, ], ], Defaults option specifies options for given supervisor across all environments, it gets merged with supervisors configuration of given environment to avoid repetition while defining your supervisors. Check SupervisorOpiton class that contains all supervisor options. Let’s summarize options used for supervisor configuration: connection – one of queue connections specified in config/queue.php, queue – array of queues for which this configuration is intendent, balance – can have one of 3 strategies (simple/auto/false) for worker balancing. Strategy simple splits incoming jobs evenly between workers. Strategy auto adjusts the number of worker processes per queue based on the current workload of the queue (allocates more workers to a queue that’s more crowded). Strategy false processing of queues are processed in order they are listed in configuration, minProcesses , maxProcesses – specify when using auto balance strategy, represents minimum and maximum number of worker processes Horizon should scale up and down to, balanceMaxShift , balanceCooldown – balanceMaxShift specifies maximum number of new processes that will be created or destroyed every balanceCooldown seconds, maxTime – maximum number of seconds a worker may live, maxJobs – maximum number of jobs to run, memory – maximum amount of RAM the worker may consume, tries – maximum amount of times a job may be attempted, timeout – maximum number of seconds child worker may run, nice – specifies process priority Let’s take a look at HorizonServisProvider.php file: public function boot(): void { parent::boot(); // Horizon::routeSmsNotificationsTo('15556667777'); // Horizon::routeMailNotificationsTo('example@example.com'); // Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel'); // Horizon::night(); } Inside the boot method you have commented methods that can additionally configure the horizon. protected function gate(): void { Gate::define('viewHorizon', function ($user) { return in_array($user->email, [ // add emails that are acceptable ]); }); } Gate method is used for authorization, it allows you to specify user emails that could access this route in non local environments. To start all the supervisor configurations (workers) run the following artisan command: php artisan horizon If you visit the web route for horizon you can see dashboard, status should now be set to active. Last part is deployment of Horizon, you should configure the process monitor – supervisor previously explained. Here is an example of horizon.conf file: [program:horizon] process_name=%(program_name)s command=php /home/user/app.com/artisan horizon autostart=true autorestart=true redirect_stderr=true stdout_logfile=/home/user/app.com/worker.log stopwaitsecs=3600 Notice here we don’t have numprocs because we have already configured that in supervisor configuration in config/horizon.php file . Also notice the command is different and now it’s all handled by Horizon supervisor configurations. Firstly reload demons config files: sudo supervisorctl reread Then reload config add/remove process/groups, and restart programs: sudo supervisorctl update Lastly start all processes in a group [program:x]: sudo supervisorctl start horizon:* Conclusion You have seen how you should actually configure and deploy Laravel queues by using process monitor – supervisor. By using a supervisor we handled workers to run constantly. Also you have seen how to configure redis queues and how to install Laravel horizon which is a great dashboard to monitor your queues and jobs. Hope this blog was helpful whether you are a beginner or you just wanted to read more about queue deployment or how to set up Laravel horizon. Luka Ljubicic Junior software Backend Developer, with a primary focus on web development written in Laravel framework. Even though Luka is mostly focused on backend development, he's willing to improve his knowledge in the fields of frontend development and cyber security. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 6, 2025 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 6, 2025 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Laravel Queues - Q Agency - Tech Consulting and Software Engineering URL: https://q.agency/blog/laravel-queues/ What are Laravel queues? Why, how, and when should you use queues? This blog will also cover topics of jobs and workers. Laravel Queues - Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Laravel Queues – Why, How, and When Should You Use Them? Laravel Queues – Why, How, and When Should You Use Them? January 8, 2026 — 17 min read Why, how, and when should you use queues ? This blog will visually and practically represent queues and their benefits . In short, if you have some intensive tasks that take too long to perform during a typical web request you should consider using queues. For example, when a user fills out a form for registration, we would like to send a welcome email. The frontend part of application sends data to the API endpoint in backend where creating a user and sending an email is performed if data is valid. While this seems straightforward, generating and sending emails is a task that takes time to process. Users would have to wait extra time on registration for that task to complete (synchronous approach). Instead, to provide a better user experience generating and sending emails is a task that can easily be processed by a queue in the background ( asynchronous approach ). The synchronous approach blocks I/O and does things sequentially so in the example above it will take a longer time to get a response to the frontend . While asynchronous approach (using queues) moves tasks to be processed in the background, so the rest of code continues its execution – this will result in a quicker response to frontend. Introduction – Jobs, Queues, Workers Before I show how to implement queues, let’s imagine we are in a bookstore and have to wait in the checkout line (image 1). One checkout line represents one queue . Each person waiting in that line represents a job . And there is a worker that processes each person ( job ). Image 1: Jobs, queue, worker A worker has to process each person (job), and order of processing jobs is performed as first in first out (FIFO) . So if you take a look at image 1, the old lady is processed first, and the young lady last. You can imagine queues as linked lists where each addition is added to the end and processed last. That’s the nature of how a queue works ( FIFO – First In First Out ). We could also have multiple workers processing same queue which would result in faster processing of that queue , but more on that later. Queues A queue is a linear data structure that is open at both ends and operations are performed in First In First Out (FIFO) order. We define a queue to be a list in which all additions to list are made at one end, and all deletions from list are made at the other end. Take a look at image 2, the first entry that is removed from the queue is called Front or Head and last entry (most recent) is called Rear or Tail . The element which is first pushed into order (image 2 – item with value 2), gets operation first performed on. ( geeksforgeeks.org ) Image 2: Queue Now that we understand how the queue works, let’s take a look at queues config file (config/queue.php): 'default' => env('QUEUE_CONNECTION', 'sync'), 'connections' => [ 'sync' => [ … ], 'database' => [ … ], 'beanstalkd' => [ … ], 'sql' => [ … ], 'redis' => [ … ], ], 'failed' => [ … ], Firstly before we dive any deeper let’s explain top-level configuration array keys (options). Connections option defines available connections (drivers) to backend queue services . You can use any driver specified in that array (database, Beanstalk, Amazon SQS, or Redis). Each connection has its configuration options. All of them contain a queue option which represents default queue that jobs will be dispatched to when they are sent to a given connection. Also, all of them contain after_commit option which will be discussed later. Default option takes in the value specified in connections array. By default, it takes environment variable QUEUE_CONNECTION and if not present falls back to ‘sync’ value. Value ‘ sync ’ is another connection service that is set to be default, which means that the framework will process all jobs synchronously. If you are planning to use queues (asynchronous) you need to change them to other available backend services. Failed option represents failed queue job logging and you can control which database and table are used to store the jobs that have failed. Next, we need to understand what are jobs and workers. Jobs Job is just a part of the code that we want to execute. We put jobs inside queue to defer their execution. If we dispatch a job that means we push it to queue. To create a job in laravel we can use the following artisan command: php artisan make:job This will create a job that looks like this: class SomeJob implements ShouldQueue {     use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;     /**      * Create a new job instance.      */     public function __construct()     {     }     /**      * Execute the job.      */     public function handle(): void     {     } } You can see that we get 4 traits and implementation of ShouldQueue interface out of the box. The following blog explains this in-depth, but to summarize: ShouldQueue interface indicates the framework to automatically push jobs to queue, instead of processing it immediately in the current application lifecycle where it was dispatched. The following part of the application checks if a job should be queued. Dispatchable is a helper trait that has some static methods that help you dispatch a job without instantiating it manually. Since methods are static simplest way to dispatch a job is by calling those methods on job class, in this example to dispatch a job simply call SomeJob::dispatch(); InteractsWithQueue optional trait that provides methods on the job itself. It provides methods like attempts() that return the number of attempts that this job tried to execute, releases() that push this job back to queue, etc. Queueable optional trait that is quite powerful, it allows you to set connection, queue, or a job delay. SerializesModels trait could be used when you are passing an Eloquent Model or collection as an argument in constructor. This trait will serialize the model identifier. When the job is handled, the queue system will re-retrieve the full model instance from the database and have the latest model values. More about this trait can be found in the following blog . The last trait that can also be present in job is called Batchable and is necessary to be present in job if the job is part of the batch, more on that later. If you are dispatching jobs using methods from Dispatchable trait to pass parameters to a constructor you can use it like the following: SomeJob::dispatch($parameter1); Jobs could also be dispatched using dispatch helper method like the following: dispatch(new SomeJob($parameter1)); Handle method of each job is where magic happens, so all the logic job needs to perform is written in that method. Now when we understand jobs, we need to know what queue workers are and how to start one. Workers Queue worker is a process that runs in background and is responsible for processing unprocessed jobs in a queue. Queue workers are long-lived processes that store booted application state in memory, which means that you need to restart them if you make any changes in your code. You could have more than one worker processing the same queue which will result in faster execution times for that queue. To test this try opening multiple terminals and starting workers on the same queue. A better approach would be using a process monitor – supervisor which would be covered in another blog. To start queue worker run the following artisan command: php artisan queue:work When you start a worker you tell it to start processing queued jobs, if there are no active workers , jobs for that queue won’t be processed. Also, this worker will now listen to default queue option of the specified connection, more on that later. To restart queue workers run the following artisan command: php artisan queue:restart You should restart queue whenever you make some changes to your code so your code and application state refreshes in memory. If you are developing, alternatively you could run the following artisan command: php artisan queue:listen This command is different and automatically restarts worker so you don’t have to do it manually. This command is significantly less efficient so don’t use it in production. Each of these artisan commands could have extra options, for example: specifying a worker for a specific connection, queue, or multiple prioritized processing queues by worker. Also, you can tweak some settings for queue like timeout for queue, etc. Practical Code Examples – Basic To implement and process queue follow these 3 steps: create job: php artisan make:job dispatch job: JobName::dispatch(); or using helper: dispatch(new JobName()); start a worker: php artisan queue:work Take a look at a simple example of dispatching a job to the queue: // simple queue example - closure info(‘Dispatching a job to queue’); dispatch(function() {     sleep(10);     info(‘Job executed!’); // writes to storage/logs/laravel.log }); dd(‘Page finished loading!’); Dispatch helper function also accepts closure , and you could use it like this if you don’t want to create a job class which is highly recommended. If you put following code to be executed on some route and you visit it, you will have to wait 10 seconds to finish its processing. So why is that, isn’t it that job execution asynchronous ? Let’s remember that by default backend service (driver) is set to sync in config/queue.php. That means this time queue will be synchronously executed. To make asynchronous job processing available, use any other backend service (driver) available in connections array of config/queue.php file. Let’s use most straightforward connection, database but first take a look at the options it has: 'database' => [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'retry_after' => 90, 'after_commit' => false, ], Top-level name is the same as a driver’s name but it could be named anything and that name is only name of connection to tell Laravel what connection should be used. Driver is an option that specifies backend service that is going to be used. This connection has a table option because jobs will be stored in a table in this case table called “jobs”. Queue option is present in every backend service and it specifies default queue name where jobs will be dispatched. Retry_after option is important because it specifies how many seconds queue connection should wait before retrying a job that is being processed. Its value should usually be more than the maximum number of seconds of the longest-lasting job. After_commit option is present in every backend service. If you are dispatching a job within a database transaction, and the job depends on values from database you should set it to true. It’s possible that while job is running, changes are not yet committed to database. To use database driver, set QUEUE_CONNECTION=database in the environment file (.env). This changed default queue connection in config/queue.php: 'default' => env('QUEUE_CONNECTION', 'sync'), Last thing since we are using a database we need a table, and generate a migration file with the artisan command: php artisan queue:table This creates migration for jobs table: Schema::create('jobs', function (Blueprint $table) {     $table->bigIncrements('id');     $table->string('queue')->index();     $table->longText('payload');     $table->unsignedTinyInteger('attempts');     $table->unsignedInteger('reserved_at')->nullable();     $table->unsignedInteger('available_at');   $table->unsignedInteger('created_at'); }); We can migrate it using the following artisan command: php artisan migrate If you now try to revisit the previous route that contains same code for dispatching a job you will notice you didn’t have to wait. That means job is successfully dispatched, you can check database jobs table and see that job is present. Also if you check storage/logs/ laravel.log you will notice that the job didn’t log the specified string. Why is that? Well, you have guessed it, no worker is there to process those jobs. So to start processing jobs run the previously mentioned artisan command: php artisan queue:work In the terminal, you will see what is currently processing in queue (closure or name of job if you created one) and it will return your status if it was successful. Now if you wait for sleep duration of closure, you will notice terminal output success status, jobs table is empty and storage/logs/ laravel.log now contains a specified string (at the end of that file). Congratulations, you have successfully integrated your first queue which processed its closure. Let’s now update the example to use job instead of closure. First, let’s create a job named InfoJob using the following artisan command: php artisan make:job InfoJob In the handle method of InfoJob, copy closure code so it looks like the following: // InfoJob class - job /**   * Execute the job.   */ public function handle(): void {     sleep(10);     info(‘Job executed!’); // writes to storage/logs/laravel.log } Now update the example code to use dispatch static method present in Dispatchable trait. // simple queue example - job info(‘Dispatching a job to queue’); InfoJob::dispatch(); dd(‘Page finished loading!’); Restart worker and revisit route, in the terminal you should see that InfoJob is processed instead of closure. By using jobs code now looks cleaner, jobs can be reused if needed, we are more flexible and we can customize jobs with additional functionality. When jobs are dispatched like shown, they are dispatched on the specified connection (.env file – QUEUE_CONNECTION=database) and specified queue option value of config/queue.php. So in our case when we started a worker using  php artisan queue:work artisan command, worker it is processing jobs from the ‘default’ queue on connection ‘database’. Note: When dispatching a job/closure you can chain methods like onConnection(‘redis’) – which connection values are provided in config/queue.php. Also, method onQueue(‘newQueue’) will dispatch job/closure on a queue named newQueue. You could do the following: // Job InfoJob::dispatch()->onConnection(‘redis’)->onQueue(‘newQueue’); // you could also specify connection and queue inside of the constructor of the job because of Queueable trait /** – OR – **/ // Closure dispatch(function() {     sleep(10);     info(‘Job executed!’); // writes to storage/logs/laravel.log })->onConnection(‘redis’)->onQueue(‘newQueue’); If you would like to run worker more specifically, for example on a redis connection and queue named newQueue, you can start it like this: php artisan queue:work redis --queue=newQueue We will talk about redis later, this was just an example of things you could do while dispatching a job. Practical Code Examples – Job Properties, Methods Previously we have described jobs and all their traits that are present when creating a job by default. Now we will see how we can tweak some behavior of the job. All the following properties or methods are added to the job class. Let’s see $tries property: public int $tries = N; // N represents number of tries Tries property specifies how many times a job will try itself if it encounters an error. For example, if a job encountered an error the first time, it will retry itself right after and will do it max N times, after trying for N times the job will fail and be moved to failed_jobs table. To test this simply throw a new Exception(‘My exception’) inside the job handle() method. When a job fails it is moved to a table called failed_jobs table (that is specified in config/queue.php, array key – failed, option – table). This property can especially be useful if you are having some sort of daily synchronization with an external API. Imagine an external API is having some problem and your code fails because in a job you have logic that depends on that API response. Similarly, in case you don’t want the number of tries to be specified as a number, you could tell job to retry itself next 10 minutes from when it has been dispatched. To do so implement retryUntil() method: public function retryUntil(): DateTime {     return now()->addMinutes(10); } This is great but job will be retried without any pause between retries, but there is another property called $backoff : public int $backoff = N; // N represents number of seconds between each retry Now if we combine those two properties, you can see that between each retry there is a delay of N seconds. Similarly, if you want more control between retries, you could specifically define the delay after each retry. To do so implement backoff() method: public function backoff(): array { return [1, 5, 10]; } This means after the first retry job will pause for 1 second, after the second retry it will wait for 5 seconds, and so on. Property $timeout has a default value of 60 seconds, it allows you to specify the longest processing time for a job. If processing time of this job is greater than $timeout value, the worker processing job will exit with an error. To do so, specify the timeout value: public int $timeout = N; // N represents maximum processing seconds There is also an available failed() method which is called whenever the job fails, so in case you need logging or sending notification you could implement it: public function failed(Throwable $exception): void { // handle job failure } These were properties and methods that you would most likely use. If you want to see more of these check the official Laravel documentation . Practical Code Examples – Chains, Batches Imagine chains and batches as multiple jobs that are grouped. But there is a difference between the two. Chain allows you to specify a list of queued jobs that should be run in sequence. If any job in sequence fails, the rest will not be executed. This could be useful when you have a large task that could be split into smaller tasks that depend on each other. For example: You have a task that processes images, the jobs you could implement are: EncodePhoto OptimizePhoto, StoreOptimizedPhoto Then call the chain method on Bus facade: $chain = Bus::chain([     new EncodePhoto,     new OptimizePhoto,     new StoreOptimizedPhoto, ])->catch(function (Throwable $e) {     // A job within the chain has failed... })->dispatch(); If you want you can also specify closure inside the chain array. Also if you want to add more chains on the go, you could do so with the chain method. $chain->chain([new SomeJob(), new SomeJob1, ....]); Batch allows you to group multiple jobs. Unlike chains, if any of jobs fail in a batch, its execution won’t stop. You should use batches when you want to have information about jobs inside of it. Before you use batch, generate a migration file with artisan command: php artisan queue:batches-table This creates migration for the table: Schema::create('job_batches', function (Blueprint $table) {     $table->string('id')->primary();     $table->string('name');     $table->integer('total_jobs');     $table->integer('pending_jobs');     $table->integer('failed_jobs');     $table->text('failed_job_ids');     $table->mediumText('options')->nullable();     $table->integer('cancelled_at')->nullable();     $table->integer('created_at');     $table->integer('finished_at')->nullable(); }); We can migrate it using the following artisan command: php artisan migrate Every job that’s inside a batch needs to use Batchable trait. Call batch method on Bus facade: $batch = Bus::batch([             new LoggerJob(1),             new LoggerJob(2), ])->then(function (Batch $batch) {     // All jobs completed successfully... })->catch(function (Batch $batch, Throwable $e) {     // First batch job failure detected... })->finally(function (Batch $batch) {     // The batch has finished executing... })->allowFailures()->dispatch(); Batch gives you 3 callback methods that you can use. Batches work well with events so check it out. If you would like to add additional jobs on the go, you can use: $batch->add(new SomeJob()); Notice in the example above we used allowFailures() method. By default, if this method is not used, so whenever a job fails its batch becomes canceled. The batch will continue its execution, it will only fill cancelled_at column for that batch. You are then able to check if job has been canceled inside job because of Batchable trait. You can do so with the following code: if ($this->batch()->cancelled()) {     // Determine if the batch has been cancelled...     return; } If you don’t want the batch to be marked as canceled on its job failure, just chain allowFailures() method. Batch also gives you properties and methods for example: what is the number of total jobs, what are failed jobs, and what’s the percentage of a compilation of a job. Full list can be found in the official Laravel documentation . Conclusion We have seen how queues could handle jobs of our application asynchronously so heavy tasks could be processed in the background without the user having to wait for them to complete. This was just an example of where and how you could use queues. Also, we have covered chains and batches which can be helpful if you are having a group of jobs. Hope this blog was helpful whether you are a beginner or you just wanted to read more about queues. Luka Ljubicic Junior software Backend Developer, with a primary focus on web development written in Laravel framework. Even though Luka is mostly focused on backend development, he's willing to improve his knowledge in the fields of frontend development and cyber security. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 8, 2026 — 17 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 8, 2026 — 17 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Sta [truncated] ======================================================================== # Laravel Vapor — Getting Started - Tech Consulting and Software Engineering URL: https://q.agency/blog/laravel-vapor-getting-started/ What is Laravel Vapor and why should you use it? Deploy your application to AWS with the scalability and simplicity of serverless. Laravel Vapor — Getting Started | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Laravel Vapor — Getting Started Laravel Vapor — Getting Started February 8, 2026 — 9 min read What is Laravel Vapor and why should you use it? In just a few easy steps, deploy your application to AWS with the scalability and simplicity of serverless — without having to manage or provision servers (infrastructure). Laravel Vapor is an auto-scaling, serverless deployment platform for Laravel, powered by AWS Lambda. It provides multiple features of managing databases, caches, queues, DNS, auto-scaling with simplicity in mind. Registration and Setup Once you register you automatically get assigned to a “Personal” team. Projects (when created), Networks, Databases, Caches and Domains are associated with the specific team . Teams are used to organize projects by clients or topics. You should setup billing information under My profile > Billing if you have more then one project. Connect your AWS account with each team . Choose a team inside Vapor UI and under Dashboard > Team settings > AWS Accounts enter information from AWS account. Account name can be anything, you can get Access Key ID and Secret Access Key from AWS console (click on account name > Security Credentials > Access keys). Install Vapor CLI globally using terminal: composer global require laravel/vapor-cli –update-with-dependencies . Also, to make sure you’re running the latest version, execute: composer global update laravel/vapor-cli . In the terminal, enter vapor to confirm it is successfully installed (if command is not found, add PATH=$(composer global config bin-dir –absolute –quiet):$PATH to your ~/.bashrc) . Application requirements are php 7.3 or higher and laravel/framework 6.0 or higher (check in composer.json file). We’re going to work only with the default Personal team, but usually you should always check if you have the right team selected – otherwise you will most likely create duplicate of project in another team. Project Initialization and Overview Move into the project folder, if you are not logged in use vapor login command. Next, execute the vapor init command, enter the region where the project should be placed in, ex. eu-west-1 (choose location closest to your users). Also, install laravel/vapor-core package when asked. Vapor core contains a service provider that will allow application to run Vapor. In the Vapor UI you can see a list of your projects for the chosen team. If you open your project you just created, you will see a production environment (act as versions of application). If you want you can add more environments (ex. staging, testing etc). Under Networks there will be a new network created by Vapor – AWS VPC to secure our resources by isolating them from the outside world. If you click on the created network you can add NAT Gateway or create Load Balancer. In the root of the project we have a vapor.yml file which contains environments and allows you to configure deployments. For now we can deploy our application in a production environment, to do so run: vapor deploy production ( production represents the environment present in vapor.yml file under environments key). This will deploy application to the production environment using configuration present in vapor.yml file (read docs for more information). Deployment steps are shown in the terminal, as well as in the production environment in Laravel Vapor UI for that project. When you deploy your application to some environment – that environment gets automatically assigned a unique vanity URL ( domain ), development domain where you can preview your application. Each environment has its own unique vanity domain. Configure Environment and Deployment – vapor.yml When you add a project to Vapor, it creates a vapor.yml file at the root of your project. This file contains the project name, as well options for each environment present in that file. Each environment has its own options, vanity domain and its own features (check out docs). Check the following vapor.yml configuration file. Commands that run before deployment (build) : The build option (hooks) prepares your application for deployment. Set of commands that you want to run on a local machine (before deployment) to prepare your application for deployment. Build hooks output is shown when we deploy execute: vapor deploy Commands that run after deployment (deploy) : The deploy option (hooks) are run after uploading applications to AWS. For example we want to execute a php artisan migrate –force command (use force flag to avoid prompt). Since this is a database migration command and we haven’t created a database using Vapor this command is expected to fail (in step “Running deployment hooks”) when we execute: vapor deploy If you need to change the php version , you can do so by changing runtime value (runtime: php-8.1:al2) – runtime max app size is 250MB. To add new environment, execute: vapor env creates new environment option in vapor.yml file (with name new_env_name ) creates new environment in list of environments for project in Laravel Vapor UI Then you deploy it using: vapor deploy new_env_name Databases Databases can be created and managed inside Vapor UI or from Vapor-CLI. To create database go to your Laravel Vapor UI > Resources – Databases and click Create database: For a network , choose the one where you want to put all your resources that will connect to your application and environment. Name that you specify is important (in our case named vapor-app-database ) because we will include it later in the vapor.yml file. Type specifies what kind of database you wish to create (MySQL or PostgreSQL) also you can choose Fixed Size Database or Serverless database. The difference is that if you choose Serverless you don’t have to guess capacity for your application needs, database storage and compute capacity when your application needs it, and shrinks capacity when your app needs less. Choose type depending on your workload. Backup Retention Window (Days) – it does allow you to restore your database within specified days. Serverless RDS costs and gives you some different options, described at following image: Choose if your database should be public (free) or private (attaches NAT gateway and jumpbox – both cost ). Lastly you can enable storage encryption if needed. When we create a database, we get database master user database credentials (save them, if you want to connect to the database from a local machine). Also there’s no need to include them in the .env file of your project – Vapor does this when you configure the vapor.yml file to use the created database. Inside vapor.yml file for environment (in our case production ), add: database: vapor-app-database (where vapor-app-database is the name of the database we just created in Vapor UI) as shown . The last thing you need to do is deploy your project ( environment ), so execute: vapor deploy production Inside Vapor UI > Resources – Databases > vapor-app-database you can manage database users, set alarms (ex. when you need to scale). To scale your database click on triple dot (…) and click on Scale – this will cause downtime so you may want to put your application in maintenance mode before scaling. To put your application in maintenance mode, inside Vapor UI > Projects – vapor-app > production , click on triple dot and click on enable maintenance mode. Since database backups are done automatically, if you want to restore your database to any point in time inside Vapor UI > Resources – Databases > vapor-app-database , click on triple dot (…) and click Restore. The way it works it will create a new database with the content depending on the point in time you specify (within the Backup retention window – image 1.1 – 3 days). Docker Deployments We could use Vapor pre-built packages for our runtimes, but what if you need some php extension or your application size is greater than 250MB which is max size for Vapor pre-built packages. Introducing docker runtime which has its limitations for applications up to 10GB in size and gives you ability to install extensions etc. (check out docs for more). Create Dockerfile at the root of your project with the name of the environment. For a production environment, create a production .Dockerfile at the root of your project. In the vapor.yml file instead of using runtime like php, for runtime use runtime:docker as shown , where the production .Dockerfile looks like the following . In order to apply changes execute: vapor deploy production You can customize Dockerfile as you want, install extensions etc. You could for example check if FFMPEG library is installed using following command: vapor tinker –code “echo exec(‘ffmpeg –version’)” production Vapor Docker images are based on Alpine Linux (read more ). We will add FFMPEG library, mysql client, GMP extension and customize php.ini file. Your production .Dockerfile would look like the this . Create your php.ini file at the root of your project. Its content may look like the following . Once you have created both, don’t forget to execute vapor deploy production . Environment Variables Environment file ( .env ) that’s inside your project contains values for local development. All environment variables that are in use for specific application environment can be seen inside AWS account: AWS Lambda > Functions > vapor- – > configuration > Environment variables – this app is called “ vapor-app ” – deployed “ production ” environment (specified in vapor.yml ) You can edit those environment variables using Vapor-CLI or inside Vapor UI. Change environment variables in Vapor UI : In Vapor UI > Projects – vapor-app > production , click on triple dots (…) on top right corner and choose “Edit Environment Variables”. After changing those values you click Save, and also you need to deploy your application for new environment variables to take effect. Check out if variables are successfully set after deployment in your AWS account ( AWS > Lambda > Functions > vapor- – > configuration > Environment variables ). Conclusion You’ve seen how easy it is to deploy Laravel applications using Laravel Vapor. These were just the basics of Laravel Vapor and it has more features than shown. You can add more teams and privileges per each member, configure domains, execute Tinker commands on environments, configure caches, queues, firewall, monitoring, logging etc. Hope this blog was helpful for you to learn the basics of Laravel Vapor and how to get started. Luka Ljubicic Junior software Backend Developer, with a primary focus on web development written in Laravel framework. Even though Luka is mostly focused on backend development, he's willing to improve his knowledge in the fields of frontend development and cyber security. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 8, 2026 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 8, 2026 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Let’s talk about Design Systems - Tech Consulting and Software Engineering URL: https://q.agency/blog/lets-talk-about-design-systems/ Learn what design systems are, why they matter, and how reusable design components, code, and guidelines can improve efficiency, consistency, and collaboration. Let’s talk about Design Systems | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Let’s talk about Design Systems Let’s talk about Design Systems October 8, 2020 — 9 min read Design systems have become a big part of everyday work in the IT industry. Today, digital products are very complex and used on multiple platforms. Time is money – and that time includes countless team meetings, onboarding of new employees, introducing your product. We need to make those products consistent and recognizable. To increase eiciency in your workflow and save time developing a product, your projects require a stable library of components. We’re not talking just about building a system of design deliverables, but also about maintaining it and keeping it updated with the latest changes and implementation versions. It’s not a job for one person, but for a whole team working on a project: designers, developers, and executives. The design system isn’t just a Sketch library or style guide. It’s all of that and much more. What exactly is a Design System? Let’s put it this way – a designer creates a website or an app and delivers all of the necessary assets to the developer, along with a style guide that explains how to apply each design component. Then, we have a developer who turns those design components into code. As of that moment, you have 3 categories of the product development process: Assets Guides Code Create a system that contains all 3 categories and you got yourself a Design System. In other words, a Design System is not a deliverable asset or a guide, but a set of design deliverables and reusable code snippets . We’re constantly upgrading it as it evolves with the product for which it has been built in the first place. Why do you need it? Implementing a design system in your company’s product workflow brings a variety of benefits: Eiciency . By organizing design elements into components, design systems make the whole process more eicient, like planning, designing, testing, and coding – these processes are all streamlined to reduce wasting time. Easier onboarding of new team members. Design and code once . Your design system components will ensure all your products use only the UX elements your customers prefer. And you never have to design or code the same thing twice. Better internal communication . As a standardized document, design systems minimize the amount of miscommunication, acting as the sole source of truth for both design and code standards. They keep everyone on the same page to avoid confusion. Consistency is key . All of the components and UX elements will follow the same established rules from the start. There’s no need to reinvent the wheel, and your products will become stronger brand ambassadors by oering a consistent experience to your users across dierent touchpoints. Updating . Update it once and it populates all occurrences. Updating the same bug on dierent products can get annoying, not to mention time-consuming. What does it contain? The design system will contain all the deliverables from design and code, as well as the usage guidelines for your digital product. They are always up-to-date, ready to be used for building a product and maintaining it. It includes all of the elements and a framework that helps create consistent UX across all platforms your product uses. It provides product owners and design/development teams with complete and explicit guidelines on how to build consistent products. From atoms to organisms and pages to templates. How to start with design systems? On your way to creating a better process, start with the basics – consider the following signals to guide your decisions and check if a design system would be beneficial to you: You’re building the same things over and over. Designers are asking the same questions. You have dierent types of designed components in your digital product. You have a multi-channel product, and your users don’t have a consistent experience across the board. You’re growing fast and need to be able to design with a common language and consistent aesthetic that upholds your company’s brand. You want to speed up your process of developing and maintaining your product and use less time figuring out which button to use and where. Design is separate from development, so you don’t often talk about building or sharing components. You typically just build out one-o features. Your seasoned designers understand accessibility, but new designers have to learn it from scratch. Imagine if that knowledge was transferable to the next hire, as easily as sharing a step-by-step guide. It takes months to onboard your new developers, designers, and product managers, and it takes even longer for them to comprehend your design language. You’d like to be able to test your solutions and learn faster, but you often run into time constraints. You’re forcing your engineers to simply build what you design and move on to the next issue. Defining your company’s design system can revolutionize and streamline the way your team works, and the best way to get started is by looking at other teams’ successful systems. Then, it’s up to you to iterate it according to your brand’s guidelines and product styles. Design system stages When starting with a design system, we’re preferring it to be processed in stages configured for a specific audience. Each stage comes with its advantages. Your team of designers lies in the middle of the system – creating the foundation of your system and constantly iterating based on the continued feedback from the users. For larger companies with separated design teams (branding, marketing, product, etc) it’s mandatory that they are all included in the process of creating a design system foundation before you start implementing the design system in code. There are several significant advantages to onboarding all of the design teams to your design system first, before development begins. Doing so gets the teams involved and gives them ownership of the system at its start. It’s much easier to encourage adoption when it’s something you built together. If your design system feels imposed, unifying is a messy, slow process, requiring refactors, breaking changes, and hard conversations. In our experience, if everyone had ownership from the beginning, it would have been a much easier process than fostered a healthy relationship from the start. Making this eort first also results in external marketing that’s much more consistent. Stage 1: Designers The first group behind your design system is the product designers. From there, it should expand to include either the remaining design teams within the company or product development teams. The size and organizational structure of your company will determine which you pursue first. The accompanying design documentation encourages knowledge sharing, reduces the need to ask questions, and helps eliminate design setbacks. When we share the same resources, methodologies, and philosophies as a unified design language, we can get into the design problems without worrying about things like tribal knowledge, brand identity, pushing pixels, and a whole lot more. A new designer or developer instantly feels more connected with the company, the product, and its people, when they can: Browse the list of available components, Quickly access their usage and content guidelines, Retrieve information about design best practices, color guidelines, Research methodologies. While it’s helpful for your design teams to collaborate and have their use cases represented in your design system, be mindful of becoming too prescriptive with the teams joining the party later on. For example, you don’t want to force some product-based components into your marketing designs if they don’t feel right. Stage 2: Developers The next segment is introducing developers and project/product managers. By this point, design technology should be an important part of your organization, to simplify your designers’ workflows and to make it easy for development teams to uptake your design system. As part of your design technology eorts, your team should be ready to create, control, and maintain codified versions of the visual primitives that make up the building blocks of your design system for developers. This includes tokens like colors, icons, typography, and simple components like buttons, inputs, and menus. Providing these resources, along with your design system’s documentation, empowers product managers and developers to hit the ground running, creating consistent experiences that follow your product voice, UI standards, and component guidelines. With this as a baseline, it also makes design reviews much smoother. Your documentation will serve as a constant reference for developers so they don’t need to query designers as much. This increases eiciency and ensures that the product teams are using the right components for the right use cases. This is the easiest way to broaden the audience of your design system and design language. Stage 3: Sales & Executives For now, the only users for your design system have been the people creating your product. What happens if you want your entire company to approach their daily problems with good design in mind? What about equipping salespeople with the information and resources necessary to make a sell. This is when you want to include the remainder of employees who haven’t yet directly experienced the benefits of your design system. Give presentations to varied teams across your company. You can cover the fundamentals, philosophy, and resources provided by your design system, presenting them in a way that can be converted into strong selling points. The main goal during this stage is to encourage the realization of the value, purpose, and potential that your design system brings to your company. Conclusion While the aforementioned stages of rolling out a design system are ideal, they are not necessary to look at as “rules”. You may find yourself naturally starting a specific stage later in the process, or creating new stages as you go along. They are simply a way to conceptualize the dierent audiences and a suggestion of the rough order in which they should be introduced to your design system. Each stage should be an ongoing process, constantly upgraded and improved, as you scale your design system to your audience. Breaking our milestones into stages like this is helping us progress. Regardless of how large your company is, the key is to break up the rollout of your design system into smaller, easily achievable finish lines. Dino Adanic UX & UI Designer at Q agency. A firefighter in case of a design emergency. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 8, 2020 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 8, 2020 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Managing Hybrid Teams: Doing Things The Right Way - Tech Consulting and Software Engineering URL: https://q.agency/blog/managing-hybrid-teams/ When working on complex projects for bigger clients, it's almost certain that managing hybrid teams will be a reality. Learn more about it! Managing Hybrid Teams: Doing Things The Right Way | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Managing Hybrid Teams: Doing Things The Right Way Managing Hybrid Teams: Doing Things The Right Way May 17, 2025 — 5 min read Prologue While working on complex projects for bigger clients, there will be times when a team will be formed consisting of members who are working onsite or remotely, or from different companies, or, well, both. There are different reasons as to why that would happen, whether one of the companies working for the client doesn’t have the required resources, higher rates for particular roles, or experience and expertise. All this means is that the possibility of managing hybrid teams is almost a certainty. No matter the reason, you as a project manager , scrum master or whatever the role is called, need to make the team function as any other team. In this blog, I’ll discuss what you should watch for, what to remind yourself about and also share my experience, as I have worked on several projects within hybrid teams, as well as working with other hybrid teams. “What’s a Hybrid Team, Anyway?” As mentioned in the introduction, a hybrid team is a team consisting of members from different contractors, different places of work (onsite and remote) and from different countries and cultures. Hybrid teams are usually formed to diversify skills, optimise costs, or because the deadlines are tight and one of the contractors lacks a required role (or multiple of them), so a different contractor has to cover it. Even though these teams offer different perspectives, experience and flexibility, forming them creates challenges like communication gaps, cultural and time zone differences. Recognising and managing hybrid teams is the first step towards building a team that collaborates well, no matter the distance and differences. Juggling the Hybrid Team Challenges From my experience, the biggest challenge in hybrid teams is communication . Working with different contractors and cultures can be tricky, so it’s crucial to establish simple, inclusive communication that is clear, concise, and free of double meanings. Another common hurdle is bridging the gap between contractors, as members from different companies might hesitate to share information due to confidentiality concerns. Tackle this by creating an inclusive culture and reminding everyone that the team is working toward a shared goal, where, without working together as a real team, no one benefits and nothing will get accomplished. Time zones are another challenge I’ve faced personally. They are one of the most frustrating yet simplest obstacles to manage. While you can’t control time, you can manage its impact. Raising awareness of each team member’s time zone, as well as those of the closely connected team, helps avoid miscommunication. It also prevents frustration when someone doesn’t reply at 4 in the morning their local time, and makes it easier to schedule meetings or ceremonies when everyone can actually attend. Making Communication Work in Hybrid Teams It’s easy to assume everyone is on the same page – until they’re not. In hybrid teams, even small communication gaps can snowball into delays or confusion. That’s why it’s worth over-communicating rather than under-communicating. I’ve found that the following helps a lot: Daily stand-ups or async check-ins , depending on time zones. Clear documentation in shared spaces like Confluence, Notion, or Google Docs. Always write things down , especially decisions made in meetings. Video calls for sensitive topics – the tone often gets lost in chat. You don’t need fancy tools, just clarity and consistency. Slack, or any other messaging app, helps a ton on this. Even sending short, but clear, messages on what you are doing or what you need, helps forming a consistent and open communication. Forming Culture the Right Way Creating a sense of belonging in hybrid teams takes effort, but it’s worth it (trust me on this one). People don’t need to meet in person to feel like they’re part of a team. A sense of closeness and being able to rely on each other is what will make the team work better. Here’s what’s worked for me: Celebrate small victories – quick shoutouts in the chat, emotes, or even a “great job, mate!” in a call. Create informal moments – a shared playlist, memes, or “coffee chat” channels help more than you’d think. Be inclusive by default – assume not everyone knows each other’s work habits, context, or even language fluency. When people feel seen and safe to speak up, they’ll contribute more, whether they’re onsite or on another continent. Collaboration Without Borders Hybrid collaboration isn’t just about tools – it’s about the mindset. It’s easy to fall into “us vs. them” thinking when contractors or locations are split. To solve this, encourage shared ownership early and as often as you can. Some practical ways: Mix and match team members from different companies – this way they will “forget” about their employer and make them truly work as the project team. Use visual collaborative tools like Miro or Figma – people are visual creatures, and by using visual tools, you not only improve collaboration but also make the communication clearer and effective. Clarify responsibilities – different companies have different responsibilities for different roles (I’ve noticed this especially for the scrum master and business analyst roles), so make sure to define what everyone is really expected to do. When everyone’s clear on what they’re doing and why, the collaboration feels natural, not forced. Final Thoughts Managing hybrid teams may come with its own set of challenges, but it also offers incredible opportunities for growth and collaboration. By fostering open communication, building a strong team culture, and embracing a collaborative mindset, you can help your hybrid team thrive. It’s all about ensuring that everyone feels included, aligned, and valued, no matter where they’re located. With the right approach, your hybrid team can turn challenges into strengths, creating an environment where innovation and productivity flourish. And that is when the real magic happens. Alen Viskovic IT project manager that puts the team-wellbeing in the first place. As I always say: “A happy team is a productive team!”. I love cooking, photography, nature, succulents, and card games. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 17, 2025 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 17, 2025 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Mastering Mobile App Development Project Management: How to Outperform Your Competition - Tech Consulting and Software Engineering URL: https://q.agency/blog/mastering-mobile-app-development-project-management/ A well planned project management approach serves as the key to a successful mobile app development. Read all about it in this blog article! Mastering Mobile App Development Project Management: How to Outperform Your Competition | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Mastering Mobile App Development Project Management: How to Outperform Your Competition Mastering Mobile App Development Project Management: How to Outperform Your Competition February 24, 2025 — 9 min read How many minutes has it passed since you opened one of the apps on your phone? Mobile apps have become essential tools in our day-to-day life. From food delivery, news or fintech apps, these software products dominate almost every aspect of our day. But the development of a successful mobile app takes time, dedication, and a whole lot of expertise. Well planned mobile app development project management principles serve as the foundation to delivering high quality apps that meet deadlines as well as budget constraints. This is why we wrote a blog post to show you the crucial role of project management in creating and delivering high-performing mobile apps. Core Principles of Mobile App Project Management Clear Objectives & Clear Scope Every project should start with a well-defined goal and a clear scope. Mobile app development is not an exception to this rule. Document main business objectives, and core functionalities, prioritise requirements and define success metrics. Ask your client what a project success looks like for them. Integrate and remember this vision throughout your discovery process. Agile Development Agile development approach will ensure flexibility and adaptability given the fast-changing nature of mobile technology. Think about client feedback and how it needs to be continuously integrated to refine your product. This would be very hard if you are not failing fast and learning fast. User-Centric Approach Any team member in your project uses various mobile applications in their day-to-day life. We all notice when user experience is not on point, we get frustrated, and maybe even cancel subscriptions. Think about these things when setting up your project. User experience (UX) is one of the ground rules for successful mobile app development. Efficient project management ensures that UX designers, developers, and QAs collaborate to prioritise user-friendly interfaces, seamless navigation, and top-quality user experience. Cross-Platform Compatibility Mobile applications must function across different operating systems (iOS and Android) and on various devices. This directly impacts project planning and release times. As a project manager, ensure optimal testing timeframes and include compatibility checks within the project schedule. Security & Compliance Three words here. Security, security and again, security. With the increasing number of cyber threats and data privacy regulations, application security and regulatory compliance is a must. Development Lifecycle of a Mobile App 1) Project Initiation In this initial phase, the project’s objectives are defined. This includes: determining the scope of the project listing all the functionalities that need to be developed identifying the target platforms (Android, iOS, or both) deciding on the technologies to be used for development (Native Android/iOS or cross-platform technologies like Flutter) 2) Design After establishing the scope and required functionalities, the design phase begins, focusing on determining the overall user experience of the app and creating the app’s visual appearance while complying with established mobile app design principles and platform-specific guidelines (Android and iOS). 3) Development & Testing The development phase involves several key steps: setting up the project using the agreed-upon technology (with separate setups for each platform in the case of native iOS and Android development) creating a Git repository for version control preparing different environments (development, staging, production) connecting the app to a crash analytics tool establishing a Continuous Integration/Continuous Delivery (CI/CD) process implementing design settings from the app design (colors, themes, text styles, paddings, etc.) eginning the development of reusable UI components Following these initial steps, the team proceeds with feature development according to agreed-upon plans and sprint schedules. As a standard procedure, unit tests are written to validate the behaviour of code units and code reviews are conducted to ensure code quality, consistency and compliance with standards. Typically, at the end of each two-week sprint, there are demo presentations to the client and app distribution for testing (via Testflight for iOS, Google Play for Android). The testing is done by the QA, after features within each Sprint are implemented. 4) Release & Ongoing Activities After implementing and testing the agreed-upon set of features, the app is prepared for release to the app stores. This involves setting up the necessary information on the Apple App Store and Google Play Store (app name, description, screenshots, data privacy details, etc.) to be able to release the initial version of the app. Depending on the client agreement, the following activities may occur: continuing development with new features and releasing updated versions of the app handing over the project to the client and ending the collaboration continuing the collaboration through maintenance, focusing on bug fixes, improvements to existing features, and potentially adding minor new functionalities, rather than intensive development of major new features Key Challenges in Mobile App Project Management Despite structured planning and as in any project, it’s common we usually find some common challenges such as: rapid technological changes: frequent updates in mobile OS, frameworks, and security protocols necessitate a flexible project strategy device and platform fragmentation: managing development for different platforms and a vast array of devices can lead to compatibility and performance issues uncertain user expectations: user preferences evolve quickly, which makes it challenging to prioritise the app features continuous maintenance needs: unlike traditional software, mobile apps require frequent updates, bug fixes, and new feature rollouts to maintain user engagement. Which Tools & Technologies to Use to Streamline the Process? Mobile app development tools include a variety of frameworks, libraries and environments essential for developers to efficiently build, test, and deploy applications. Using the right tools can significantly accelerate and improve the mobile app development process. In the majority of cases (90-95%) when aiming to speed up mobile app development for both iOS and Android, a cross-platform solution proves to be a more efficient choice than a native approach, which necessitates separate development for each platform. In this area, Flutter and React Native stand out as the top choices. Other cross-platform solutions tend to lag behind, taking into account the current maturity of the platforms, either in terms of performance, widespread usage or community support. The following mobile app development tools are used in both native and cross-platform development: Xcode : the integrated development environment (IDE) used for developing native iOS applications Android Studio : this is the most popular IDE for creating native Android applications that can also support the extension installation when using the Flutter kit for development VSCode : a ‘lightweight’ multi-purpose IDE that can be used for developing various types of applications with different technologies. In addition, it can easily become your smart assistant in developing React Native or Flutter projects; provided if you install the required extensions such as GitLens, ESLint, React Native Snippet, etc. Continuous Integration and Continuous Delivery (CI/CD) tools: these are software solutions that help automate the process of building, testing, and making changes or refinements in your code. These tools streamline the release process, reduce the likelihood of failure at deployment and provide a consistent build environment across all environments. At our company, we use Bitrise as the tool of choice. However, there are several other great performing options with the same function — these are CodeMagic, Jenkins and GitHub Actions. Once the app is ready to be tested by the Quality Assurance team and the client, this is usually done with TestFlight for iOS and Google Play internal testing channel for Android operating system. Different Project Management Methodologies & Best Practices Here’s a list of the most common methodologies used in mobile app development project management: Agile (Scrum/Kanban): this methodology helps simplify quick iterations and provides frequent feedback from users Waterfall: often used for the initial planning and documentation of the project DevOps: it guarantees the implementation of the CI/CD pipeline for a more optimised deployment process Lean startup: this methodology assists in building the minimum viable product (MVP) and iterating on it based on the app users’ insights Taking into account the methodologies above, a hybrid approach that includes different practices and methodologies is the best way to increase your overall project management efficiency. Using a hybrid approach, Q has upgraded both the web and mobile app for our loyal partner, WaterBear . This is a platform for environmentally themed videos and content that brings their audience to concrete actions. Here’s a brief overview of what we did for our client: enhancement of the Home feed with personalised articles, events, videos and missions improved search and filtering functions enhanced community interaction by promoting awareness and encouraging participation in social and environmental causes More on our client’s mission and how we approached this project, you can learn more in this link . What the Future Holds for Mobile App Project Management With the fast changes in technology happening before our eyes, user expectations also change. This is why the future trends should be an absolute must in the practice of mobile app development — AI-powered development, low-code development, automated testing, etc. are going to bring even more innovation and be crucial for success in future mobile app development projects. AI-driven development: AI is improving the efficiency in delivery timelines greatly. The role of developers is shifting from writing the code to a role of supervisor of sorts. From being those who code to overseeing and supervising AI tools that will do the coding instead low-code/no-code development: this next-generation type of building software speeds up app development and decreases the need for complicated coding, providing a great alternative for creating less complex apps which often require faster launch remote & hybrid workflows: cloud-based collaboration tools allow for the seamless execution of your projects automated testing: integration of AI-powered tools inevitably speeds up and ensures better quality code delivery before the final user testing Conclusion In this blog post, we covered the mobile app development lifecycle, development-related key challenges, as well as project management methodologies and tools that help manage projects like these. If you want to make sure to provide your services such as building a high-quality mobile app in a very competitive environment that reigns nowadays, first things first is setting up a robust project management strategy. A well thought out PM strategy is the core of efficient and successful project management in mobile app development. Or any app for that matter. And let’s not forget the fact that for the software development sector, the future holds many challenges, but it will be no short of opportunities either. Be it the low-code and no-code platforms, AI-driven development or automated testing — it’s essential for both developers and project managers to always keep up with this fast-changing industry. Or even better, be one step ahead of your competition at all times. If you’d like to do business with us, you’re more than welcome to get in touch and start working together on next-gen software. We are ready. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 24, 2025 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 24, 2025 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Measuring Productivity in Agile Projects: Key Metrics to Track - Tech Consulting and Software Engineering URL: https://q.agency/blog/measuring-productivity-in-agile-projects-key-metrics-to-track/ Measuring productivity in Agile projects with key metrics that help teams track efficiency, improve delivery, and make smarter decisions. Measuring Productivity in Agile Projects: Key Metrics to Track | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Measuring Productivity in Agile Projects: Key Metrics to Track Measuring Productivity in Agile Projects: Key Metrics to Track March 30, 2026 — 9 min read Discover the most common metrics Agile teams can use to measure productivity, improve efficiency, and deliver with more clarity. In a highly competitive environment, everyone tries to beat the competition and offer innovative solutions first. This is especially true for software products, which puts enormous pressure on development teams to be more productive and efficient. Over the recent years, the wide availability of AI tools in software development has largely increased this pressure. It’s now more important than ever for Agile teams to measure their productivity and, most importantly, to work on increasing it. This blog post shows the most common metrics Agile teams can implement and use to measure and improve their productivity and efficiency. What is productivity? To measure productivity in Agile projects, it’s necessary to define what productivity is. According to Cambridge Dictionary , productivity is the rate at which a company or country makes goods, usually judged in connection with the number of people and the amount of materials necessary to produce the goods . However, to properly measure, there is a need to distinguish between productivity and efficiency. Productivity is the quantity of output produced. Its focus is on how much work is completed. In software development terms it can be how many features were delivered to customers. Efficiency is the quality and optimization of that output. Here the focus is on producing the biggest output while minimising resources (e.g. amount of hours spent coding and testing the software). Since productivity and efficiency are tightly connected, this blog post will include both. Agile practitioners and project stakeholders can use these measures to assess the performance of their projects and make corrective actions. Measuring productivity – Traditional vs Agile There is a substantial difference between measuring productivity in Agile compared to traditional (waterfall) projects. In traditional Waterfall projects, productivity is often measured according to compliance to a plan. Huge effort invested in upfront project planning and minimum willingness to change during the project execution meant that measuring the plan was (nearly) perfect. Therefore, measure of plan execution is the most important metric. However, in Agile projects delivery of value (in the form of working software) represents a more important metric. Below you can find a table that shows the most important differences in measuring productivity between traditional and Agile projects. If you want a more detailed description of differences in traditional and agile projects you can check our blog post that describes in detail how value-driven delivery outperforms traditional project plans . Common Agile productivity metrics Most popular productivity metrics used in Agile projects are focused on measuring delivery flow. These are: Velocity Lead time Cycle time Velocity measures the amount of work a team completes in a sprint, typically using story points. Story point estimate is one of the most widely used metrics in Agile projects. Although story points can be used to measure output, using them as an only measure of productivity can lead to inaccurate data. Example of velocity chart comparing commitment and completed story points across 6 sprints. Source: Author Unlike Velocity, Lead time and Cycle time measure time passed between different phases that work items go into. Lead time measures the total time from initial customer request to delivering the working software to users. Cycle time measures the time from start of the work on that feature request until this request is delivered in the form of working software. Therefore, lead time is part of cycle time, as displayed in the image below. Kanban board showing the difference between lead time and cycle time. Source: Author Advanced metrics: DORA While common Agile productivity metrics are focused mostly on team performance and delivery, DevOps mindset offers advanced metrics. DORA’s DevOps Research and Assessment software delivery performance metrics focus on a team’s ability to deliver software safely, quickly, and efficiently. DORA metrics include two main measurement areas: Throughput – measures how many items can be delivered through a given time period. Instability – measure of the amount of successful software deployments. The focus here will be on throughput metrics. DORA uses three factors to measure software delivery throughput : Change lead time: The amount of time it takes for a change to go from committed to version control to deployed in production. Deployment frequency: The number of deployments over a given period or the time between deployments. Failed deployment recovery time: The time it takes to recover from a deployment that fails and requires immediate intervention. How to incorporate productivity metrics in your Agile project So far you saw overview of most popular Agile metrics along with some advanced metrics with DevOps mindset. Now it’s time to use them – knowing theory is one thing but practical implementation another. It is also important to know why you are collecting metrics. Using them shouldn’t be a burden for your team, creating immense pressure if their velocity drops for a sprint or two. Rather than that, metrics should be used to provide a talking point for your Sprint Retrospective where the entire team can discuss how to improve productivity. Below there are 5 steps you can take to incorporate productivity metrics in your Agile project. Step 1: Select metrics relevant to your project As first step each you should select metrics to focus on: Productivity – Velocity or Throughput (for volume delivered) Flow – Lead time and Cycle time (for speed/efficiency) Advanced metrics – Change lead time, Deployment frequency and Failed deployment recovery time Your team can also choose to measure other aspects, such as quality. For example, it can look at the Defect Escape Rate (DER) to measure the percentage of bugs found in the production environment – more details in our next blog posts. Step 2: Gather data Once you select the exact metrics you want to use, it’s time to gather data and establish a baseline for you to analyze, compare and look for improvements. Gathering data requires at least 2-3 sprints and then use it to compare and improve. Step 3: Use advanced metrics To implement advanced DORA metrics Agile you should integrate data collection directly into your team’s CI/CD pipeline. This will ensure automatic collection of data, removing the need for developers to enter data manually. You can then use tools like GitHub Insights or GitLab Value Stream to analyze data and look for meaningful insights. Step 4: Use the collected data to improve as a team The most effective place to discuss productivity metrics is the Sprint Retrospective. Having this in mind, Product Owners, Project Managers or other stakeholders should not have the mindset of “making the team work harder to increase productivity (velocity)” but rather trying to find the root cause of downfall in tracked metrics and find a solution as a team. This solution would then be visible in productivity increase. For example, your team can track Velocity across multiple sprints to identify whether it is rising and falling. Example of a chart showing velocity changes over 9 sprints. Source: Author Step 5: Iterate (and automate) As the last step, repeat the process until your Agile team is working at an optimum level. Use your PM tools (such as Jira) or Git analytics (GitLab, GitHub) to generate metrics and charts automatically. Be consistent with using metrics, but most importantly – if one of your metrics is not providing insights that can lead to improvement, stop measuring it as it provides no use for you. Common mistakes in usage of Agile productivity metrics Story points are used to represent the mix of effort, complexity and risk related to a specific user story. If a team’s velocity increases, it suggests that this team is becoming more productive. But using it wrongly can lead to certain risks: Cross-team comparison: Comparing velocity of one team to another can give you the wrong impression. It’s like mixing apples and oranges. Since velocity is used as an internal baseline it is different for each team. Story points inflation: If the Product Owner asks a team to “be more productive,” the team might start estimating a 5-point story as an 8-point story. In reports productivity increase is visible. In reality nothing changed. Vague value delivered: Story Points do not represent business value delivered to customers, so we can’t really know customer value delivered. For this it’s better to use different metrics such as Business Value Points or Feature Adoption Rate. While Lead time and Cycle time are good measures for tracking flow efficiency, they can be misinterpreted: Confusing the two terms – This is the most common mistake and can lead to wrong communication with stakeholders, for example telling your client that Cycle time is 10 days while he has to wait for new feature 60 days from entering it into backlog (Lead time) Ignoring waiting time – Cycle Time only measures when someone is actively working. If a task spends 2 hours being coded but 4 days waiting for a Code Review, the Cycle Time might look “fast” (2 hours), but the reality is a bottleneck. Not identifying the bottlenecks – Connected to the above mentioned, not identifying (and addressing) bottlenecks in the process can make your delivery slower. Cumulative Flow Diagram (CFD) is a useful tool for visualizing and spotting bottlenecks. In the below example, Cumulative Flow Diagram shows widening of bands that represent Testing, Bugfixing and Done phases between March 4th and March 7th. This can indicate that there is a bottleneck in the testing phase. Example of Cumulative Flow Diagram showing bottleneck in testing phase of development. Source: Author Is measuring productivity worth it in Agile? When measuring productivity correctly (and avoiding common pitfalls) it can be a good indicator of the delivery an Agile team is making. In this blog post it’s shown which measures teams can use as well as how to implement them. Although productivity is an important aspect of Agile projects, it is not the only one teams need to track. In next posts we will describe in detail how Agile teams can measure Quality (“the cost of delivering quickly”) and Value (“what it means to the customer”). Boris Figecki Boris is Q’s Program Manager with over 10 years experience in the software industry. He's worked on both small and large scale projects that included software development for clients spanning from Hong Kong to Los Angeles. In his free time, more than anything he enjoys quiet family life. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 30, 2026 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 30, 2026 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Migrating From StateNotifier to Notifier in Riverpod 2.0 With Unit Tests - Tech Consulting and Software Engineering URL: https://q.agency/blog/migrating-from-statenotifier-to-notifier-in-riverpod-2-0-with-unit-tests/ This blog post provides comprehensive coverage of the migration process from StateNotifier to Notifier in Riverpod 2.0 with unit tests. Migrating From StateNotifier to Notifier in Riverpod 2.0 With Unit Tests | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Migrating From StateNotifier to Notifier in Riverpod 2.0 With Unit Tests Migrating From StateNotifier to Notifier in Riverpod 2.0 With Unit Tests February 28, 2026 — 6 min read Do you use Riverpod? Do you write unit tests for your notifiers? If you used the “good old” StateNotifier, wrote tests for it (as we did) and now want to switch to the new Notifier, but you’re having trouble writing tests for it, or you just want to start writing unit tests for Notifier, stay tuned. In Flutter development, we use Riverpod as our state management solution and its StateNotifier class whenever we need to hold and update some state in the app. After any business logic or data handling code is written for some feature, it should be covered with unit tests to make sure the code behaves exactly as we intended. To avoid going into details why unit testing is a must and how to start with it in the first place, you can check out our another blog post ( TDD in Flutter With Example Application Using Riverpod and Firebase ) talking in detail about unit testing, test driven development (TDD), all accompanied by a real example app. As Riverpod in version 2.0 brought new providers and StateNotifier became obsolete with its further usage being discouraged in official documentation ( from ‘StateNotifier’ ), we wanted to switch to a new recommended solution. The migration of the class itself was pretty straightforward but migrating unit tests was a little bit more challenging and this is what this blog post is all about. If you have similar doubts with migrating from StateNotifier class and its unit test to Notifier , or just want to check out how you could write a unit test for your own Notifier class implementation, keep reading. StateNotifier Implementation and Unit Test import 'package:hooks_riverpod/hooks_riverpod.dart'; import '../../data/repository/auth_repository.dart'; import 'auth_state.dart'; final authStateNotifierProvider = StateNotifierProvider( (ref) => AuthStateNotifier(ref.watch(authRepositoryProvider)), ); class AuthStateNotifier extends StateNotifier { final AuthRepository _authRepository; AuthStateNotifier(this._authRepository) : super(const AuthStateInitial()); Future login({ required String email, required String password, }) async { state = const AuthState.authenticating(); final result = await _authRepository.login(email: email, password: password); result.fold( (failure) { state = const AuthStateUnauthenticated(); }, (_) { state = const AuthStateAuthenticated(); }, ); } } As it can be seen in the code snippet above, we have simple AuthStateNotifier which extends StateNotifier and holds AuthState (sealed class which is extended by AuthStateInitial, AuthStateAuthenticating, AuthStateAuthenticated and AuthStateUnauthenticated classes). It depends on AuthRepository provided from StateNotifierProvider and in the login method it calls AuthRepository’s login method which returns Either type (from either_dart package), Left with Failure object in case login fails (or any other exception occurs) or empty Right if login succeeds. Based on AuthRepository’s login method, AuthStateNotifier’s login method will either update its state to AuthStateUnauthenticated or AuthStateAuthenticated. import 'package:either_dart/either.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:mocktail/mocktail.dart'; import 'package:myapp/features/auth/data/repository/auth_repository.dart'; import 'package:myapp/features/auth/domain/notifiers/auth_state.dart'; import 'package:myapp/features/auth/domain/notifiers/auth_state_notifier.dart'; import 'package:state_notifier_test/state_notifier_test.dart'; class MockAuthRepository extends Mock implements AuthRepository {} void main() { late AuthRepository authRepository; late ProviderContainer providerContainer; setUp(() { authRepository = MockAuthRepository(); providerContainer = ProviderContainer(overrides: [ authStateNotifierProvider .overrideWith((ref) => AuthStateNotifier(authRepository)), ]); }); group('login({String email, String password})', () { stateNotifierTest( 'executes success flow', setUp: () { when(() => authRepository.login(email: 'email@example.com', password: 'password')) .thenAnswer((_) async => const Right(null)); }, build: () => providerContainer.read(authStateNotifierProvider.notifier), actions: (stateNotifier) async { await stateNotifier.login(email: 'email@example.com', password: 'password'); }, expect: () => [const AuthStateAuthenticating(), const AuthStateAuthenticated()], ); }); } Our unit test for AuthStateNotifier’s login method was implemented with the state_notifier_test package (mentioned also in more details in our previous blog post mentioned above) which provides some convenient callbacks (setUp, build, actions and expect) to structure the unit test easily. For mocking external dependencies, in this case AuthRepository, we used mocktail instead of mockito because it doesn’t require any code generation in its setup process. Migrating StateNotifier to Notifier import 'package:hooks_riverpod/hooks_riverpod.dart'; import '../../data/repository/auth_repository.dart'; import 'auth_state.dart'; final authNotifierProvider = NotifierProvider( () => AuthNotifier(), ); class AuthNotifier extends Notifier { late AuthRepository _authRepository; @override AuthState build() { _authRepository = ref.watch(authRepositoryProvider); return const AuthStateInitial(); } Future login({ required String email, required String password, }) async { state = const AuthState.authenticating(); final result = await _authRepository.login(email: email, password: password); result.fold( (failure) { state = const AuthStateUnauthenticated(); }, (_) { state = const AuthStateAuthenticated(); }, ); } } In the above code snippet you can see how we implemented the same functionality from AuthStateNotifier in AuthNotifier which extends the new Notifier class. The main difference is that Notifier doesn’t receive anything in the constructor but needs to override the build method which has to return the AuthState object in this case and this build method is the new proper place to instantiate any external dependencies, in this case AuthRepository. Login method stayed completely the same. Now we tried to write a new test for AuthNotifier but realized we will have to come up with another approach because the state_notifier_test package works only with StateNotifier. To make the migration from our StateNotifier test to Notifier test easier, first we refactored our existing StateNotifier test to use only Flutter test methods as it can be seen in the following code snippet. Refactoring StateNotifier Test and Writing Notifier Unit Test import 'package:either_dart/either.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:mocktail/mocktail.dart'; import 'package:myapp/features/auth/data/repository/auth_repository.dart'; import 'package:myapp/features/auth/domain/notifiers/auth_state.dart'; import 'package:myapp/features/auth/domain/notifiers/auth_state_notifier.dart'; class MockAuthRepository extends Mock implements AuthRepository {} void main() { late AuthRepository authRepository; late ProviderContainer providerContainer; setUp(() { authRepository = MockAuthRepository(); providerContainer = ProviderContainer(overrides: [ authStateNotifierProvider .overrideWith((ref) => AuthStateNotifier(authRepository)), ]); }); group('login({String email, String password})', () { test( 'executes success flow', () async { when(() => authRepository.login(email: 'email@example.com', password: 'password')) .thenAnswer((_) async => const Right(null)); final authStates = []; final authStateNotifier = providerContainer.read(authStateNotifierProvider.notifier); authStateNotifier.addListener( (state) => authStates.add(state), fireImmediately: false, ); await authStateNotifier.login(email: 'email@example.com', password: 'password'); expect( [ const AuthStateAuthenticating(), const AuthStateAuthenticated(), ], authStates, ); }, ); }); } When we removed the state_notifier_test package, we had to manually collect AuthStateNotifier’s state changes in one simple list by listening to state changes via StateNotifier’s addListener method. Everything else could almost stay the same, we just didn’t have stateNotifierTest’s method callbacks anymore, but had to write everything in the body of Flutter’s test method. With this refactor finished, it was a way clearer what needs to be done to write a working unit test for our new AuthNotifier’s login method. Instead of calling the addListener method on the StateNotifier instance, the Notifier class doesn’t have an addListener method but we could utilize the listen method directly on the ProviderContainer instance (similar to WidgetRef or Ref listen method which are used more often in the code). fireImmediately parameter serves if we want to get the initial state that was set before we called the listen method, in this case we don’t need it and can be set as false. All the rest stays the same and that was everything needed to be done to finish the migration from StateNotifier to Notifier and its accompanying unit test. Conclusion In a few chapters and code snippets, we showed what was necessary to migrate StateNotifier class implementation and its unit test to Notifier. Regarding Notifier and its unit test, the same would apply also for AsyncNotifier, the only difference is that there, you would update AsyncValue instead of custom state, in our case, AuthState. Ivan Celija Ivan is a senior Flutter developer at Q, with over 5 years of experience in Flutter development and prior expertise in native iOS and Android. When not working, Ivan enjoys reading a good book, taking long walks, and watching football matches or F1 races. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 28, 2026 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 28, 2026 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Multilingual Symfony API - Tech Consulting and Software Engineering URL: https://q.agency/blog/multilingual-symfony-api/ Learn how to build a multilingual REST API with Symfony using the Knp Doctrine Behaviors bundle, translatable entities, and standard CRUD operations. Multilingual Symfony API | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Multilingual Symfony API Multilingual Symfony API August 19, 2019 — 7 min read There is a Latin proverb: Quot linguas calles, tot homines vales, meaning — As Many languages you know, as many times you are a human being… Well, we code using languages, so I reckon it’s fair enough to apply the proverb in the IT world as well. I dare to say there is still no 100% reliable translation service out there, so allowing users to dynamically define languages and corresponding data sounds pretty catchy, doesn’t it? So without any further ado, let’s get onto the topic. For implementation of this multilingual feature, we will use the Knp Doctrine2 Behaviors bundle based on a collection of traits and interfaces that add behaviors to Doctrine 2 entities and repositories. It oers a lot for a bundle, but what we need this time is just translatable behavior. Oicial documentation in the given link is enough to get you started, but there are still some additional key requirements and tricks you need to make this whole thing work. In this article, we will go through the steps of implementation and show how this feature works using the basic CRUD functionalities realized as REST API. Things that are not covered in this article but you should be familiar with are: Basic OOP principles PHP 7.1 Symfony 4.2.4 Controller, Traits Serializer Docker First, let’s install the Knp Doctrine 2 Behaviors bundle and go through the setup steps. Enter the project directory and enter the following command: composer require knplabs/doctrine-behaviors:~1.1 Since we use only translatable feature, we can disable other features/subscribers by adding the following code in our config.yml file: knp_doctrine_behaviors: blameable: false geocodable: ~ # Here null is converted to false loggable: ~ sluggable: false soft_deletable: false translatable: true # All others behaviors are disabled``` If this is omitted, all subscribers will be enabled. After defining which subscribers will be enabled and which will not, we need to register them. Depending on a version of Symfony, it can be done in several ways. If using Symfony 2 or 3, you can edit registerBundles () method in AppKernel class and add the following to the $bundles array: class AppKernel { function registerBundles() { $bundles = array( //... new KnpDoctrineBehaviorsBundleDoctrineBehaviorsBundle(), //... ); //... return $bundles; } } or you can do it the deprecated way by adding the following to your config.yml file: # app/config/config.yml imports: - { resource: ../../vendor/knplabs/doctrine-behaviors/config/orm-services.yml } The third and the last way to do the mentioned is to add subscriber(s) using the EventManager: $em->getEventManager()->addEventSubscriber(new KnpDoctrineBehaviorsORMTranslatableTranslatableSubscriber); In Symfony 4+ you will just need to update your bundles.php file and add something like this in the returning array: return = [     //...     KnpDoctrineBehaviorsBundleDoctrineBehaviorsBundle::class => ['all' => true],     //...     ] Once we are set up, we can start the implementation. Let’s create two classes Movie and MovieTranslation. By default, translatable class Movie and translation class MovieTranslation should be within the same namespace. When working on bigger projects, that could result in a messy project structure. Luckily, there is a way to use a separate namespace and to define dierent class names for translation classes. To do that, we need to override Translation and Translatable traits and their methods getTranslationEntityClass( ) and getTranslatableEntityClass() . To keep the project structure even more organized, let’s store our custom traits TranslationTrai t and TranslatableTrait under the newly created AppTranslationBundleTranslation namespace where we will keep everything we need for a proper implementation of Doctrine2 translatable behavior. The last step is overriding trait parameters of DoctrineBehaviors inside your parameters.yml or doctrine.yml file: parameters: knp.doctrine_behaviors.translatable_subscriber.translatable_trait: AppTranslationBundleTranslationTranslatableTrait knp.doctrine_behaviors.translatable_subscriber.translation_trait: AppTranslationBundleTranslationTranslationTrait Now, we can create sub-namespace AppEntityTranslation where we will store all corresponding translation classes, in this case — class MovieTranslation. After we’ve done this and made sure that class Movie uses TranslatableTrait and MovieTranslation class uses TranslationTrait, we can upgrade our doctrine schema using the command: bin/console doctrine:schema:update --force Bam! We are ready to do the fun stu. There are a few of the key methods you will find useful during the implementation of translatable behavior. These are: translate($locale = null, $fallbackToDefault = true) getTranslations() mergeNewTranslations() If you have only one entity with translatable properties, you can do it the simple way as it is stated in the documentation: To get translations, you can either use getTranslations method to get all the translations (all languages) or translate(‘en’)→getTitle() to get translation in a given language, in this example, English. Since our goal here is to allow users to define languages dynamically, we need to optimize this a little bit further. Speaking of it, we can create service TranslatonService under AppService namespace and TranslationInterface under AppTranslationBundleTranslation namespace. Each translatable class (e.g. Movie) should implement 2 key methods of TranslationInterface. The method setTranslatableProperties($lang, $value) is used to set translatable fields’ values for given language. Depending on a number of translatable properties, the method can be less or more complex. However, in this example, we have only 2 translatable properties title and description. The second method getTranslation is a custom method used to get translations in all languages. In this example, we implemented it as virtual property to include translations in REST API response when fetching data from a database. Notice that method calls method getTranslations predefined in TranslatableMethods trait of Knp Doctrine2 behaviors bundle. So, basically, if your use-case scenario doesn’t require automatic binding of translations, you might call getTranslations method directly where and when you need it. Now when we implemented two of the mentioned methods, we can create a service that will handle the actual translation based on a given JSON object. JSON request body we will use is given in the following code snippet: You can modify this JSON regarding to your needs (mind that you will have to update for each loop logic in the translateEntity method of TranslationService). The final thing we need to do is to create movieController that will handle requests for CRUD functionalities. In this example, I used dependency injection (auto wiring) to inject a few of the services we will need in our controller methods. The READ functionality doesn’t require any additional work for translations since everything is done automatically in our getTranslation() method. It’s pretty much the same when fetching a single movie: When creating a new entity, we have to call the translateEntity method before persisting and flushing the entity so it can map corresponding translations during the insertion. Update action is not much dierent than creating action but there is one thing we need to pay attention to. As you may know, the usual flow of update action is: 1. fetch the object from the database 2. update fields 3. store the object with new values There is one tricky part that is not covered in oicial documentation and it may look redundant but gave me a headache when I implemented translatable behavior for the first time. Before calling mergeNewTranslations method (from within the translateEntity method), we need to do the flush. This is a workaround to avoid integrity constraint violation for duplicate entry probably caused by conflict between background work of Knp Doctrine2 translatable behavior and lazy loading of translations when fetching the object. However, that was the only way to make the update action work (I might be missing something here, feel free to let me know if that’s the case). The remaining delete functionality is pretty straight forward: There is one additional cool feature you might need depending on your use-case scenario. Imagine you have a twig template where you need to use something like {{ movie.getTitle() }} to show the movie’s title. To be able to use property getter which is defined in MovieTranslator class, you need to add the following to your translatable class (e.g. Movie): or do it with PropertyAccessor that ships with Symfony SE: Mind that it will return translation in a language that is defined as your default locale. In case you want to change your current locale, use setDefaultLocale($locale) method of TranslatableTrait. Hopefully, you will find this article helpful, and feel free to share it around! Bruno Krnetic GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 19, 2019 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 19, 2019 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Navigating the Flow: Meet Q's Resourcing Team - Tech Consulting and Software Engineering URL: https://q.agency/blog/navigating-the-flow-meet-qs-resourcing-team/ In this blog post, we explore the synergy of Q agency’s Resourcing Team: their role, daily dynamics, and the strategic impact they make. Navigating the Flow: Meet Q's Resourcing Team | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Navigating the Flow: Meet Q’s Resourcing Team Navigating the Flow: Meet Q’s Resourcing Team February 27, 2024 — 5 min read Exploring the synergy of Q agency’s Resourcing team: their role, daily dynamics, and the strategic impact they make. In the dynamic world of IT, orchestrating resources seamlessly is not just a job – it’s an art form. We, the Resourcing team at Q, are the maestros behind the scenes. As key players in forming project teams, our role goes beyond mere allocation; it’s about strategically planning every project team to reach its full potential, considering current possibilities. Join us as we pull back the curtain and and give you a glimpse of Q’s daily operations that keep us driving forward. The Team’s Role The Resourcing team at Q agency is responsible for managing and coordinating resources across the company’s diverse array of projects. The team particularly focuses on these responsibilities: Current Projects Resourcing : Managing and allocating resources for ongoing projects to ensure they progress smoothly and efficiently. Upcoming Projects Resourcing : Planning resources for future projects or dedicated teams, depending on the prioritization of projects. Collaborative Approach : While each project or dedicated team has its distinct requirements, they are all interconnected, requiring close coordination within the team and across different departments. Strategic Planning : The team is not just involved in the day-to-day allocation of resources but also plays a critical role in planning for future project needs, which involves understanding the evolving requirements of the company and adapting resource schedules accordingly. Utilization Reporting : Apart from using Ganttic which is our main tool for tracking resource planning, we heavily rely on Sheets as well for all kinds of reporting. At Q’s Resourcing department, our teamwork resembles a finely tuned ensemble or a Tetris game if you would. Each project, whether underway or on the horizon, is assigned to one of the coordinators. We take charge from the get-go, overseeing every planning aspect until its successful conclusion. Our resourcing model begins with the BizDev or Presales team announcing a new project, often specifying required technologies. Once we receive this information, the Resourcing team steps in to assess and fulfill these needs. This includes identifying and allocating appropriate resources, which may involve internal colleagues or external recruitment. After resource allocation and project kickoff, we continue to support the Project Managers for agile projects and Client Services owners for dedicated teams. This ensures that we stay up to date with all that’s happening on the projects, especially when changes or additional resources are required. The Team’s Development Let’s turn the clock back to the beginning of 2020 when our Resourcing team took its spotlight. Before then, resourcing activities were a part of the project delivery process but not quite its own act yet. With the introduction of our dedicated Resourcing team, we’ve elevated our focus. From an initial solo role in 2020, our team has expanded to the current fantastic four. This includes our director, who steers our strategic direction, and three coordinators, each with our own superpowers: eagle-eyed detail spotting, crafting master plans, ace reporting skills, and, of course, the art of getting along with just about everyone. With each of us bringing unique strengths to the table, we continuously adapt and grow to enhance the planning efficiency at Q. Since establishing ourselves as an autonomous team, we’ve fully embraced the responsibility of resourcing across the board. This evolution has allowed other roles that used to partake in resourcing to focus on what they do best, while we dive deep into the core of planning projects, team allocation, database creation, and internal process building. A Week with the Resourcing Team Our weeks are usually planned with about 25% of time devoted to weekly coordination meetings across departments with the possibility to always hop on some ad hoc syncs: Mondays and Tuesdays : These days are all about syncing up with department heads and directors. It’s when we lay the groundwork for new resource requirements, ensuring that each department’s needs are met with precision. Wednesday : Midweek shifts our focus to the BizDev team. Here, we gather insights on upcoming projects, aligning our resource planning with the business development pipeline. This day is crucial for understanding future project landscapes and preparing accordingly. Thursdays and Fridays : Later in the week, our attention turns towards internal affairs, and keeping everything tidy on our Trello board.. We’re busy updating our tools, finalizing reports, and keeping a close eye on active projects. It’s also when we tackle any ad hoc tasks that arise, ensuring our operations remain swift and responsive. Collaboration with other departments Our communication style is rapid and direct, mainly via Slack, allowing for quick decision-making and effective problem-solving. Emails, though less frequent, are essential for formal confirmations and critical updates. Our involvement in process-building tasks has a broad impact, shaping tools like sales pipeline systems, technology databases, and onboarding / offboarding processes. An often-encountered challenge in our role is the unavailability of internal resources for new projects. When this happens, we prioritize understanding the needs for new talents and coordinate closely with the Talent team to fulfill these requirements with external hires. This collaboration is crucial for ensuring that we have the right people with the right skills on board, even when internal resources are stretched thin. It’s a dynamic that adds complexity to our work but also brings a sense of accomplishment and continuous growth. Conclusion As we navigate the world of resourcing at Q agency, our journey is filled with challenges and triumphs. It’s in tackling these challenges, bridging the production and business departments, and ensuring seamless project flows, that we find our purpose. Our role at Q’s Resourcing team goes beyond mere tasks; it’s about actively contributing to the company’s growth and efficiently adapting to the ever-changing needs of our projects. Stay tuned for our next blog, where we delve into the challenges and decision-making processes of resource allocation at Q. Marija Donkov Since summer 2021, I've been a part of Q, diving headfirst into the exciting world of Resourcing right after graduation. My happiest moments are those rare times when my inbox hits zero at the end of the day and the tools are perfectly updated, feeling like a small victory in the vast universe of resource management. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 27, 2024 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 27, 2024 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Nearshore Outsourcing Benefits - Tech Consulting and Software Engineering URL: https://q.agency/blog/nearshore-outsourcing-benefits/ The main nearshore outsourcing benefits in software development industry are: Quality at affordable prices, same time zone, team scalability. Nearshore Outsourcing Benefits | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Nearshore Outsourcing Benefits Nearshore Outsourcing Benefits April 4, 2025 — 4 min read The nearshore outsourcing benefits when seeking experts in software development are: 1. Affordable prices. No hidden costs. In-house hiring is more expensive than hiring a dedicated software development team or augmenting your existing one. Bypass the costs of hiring, health insurance, equipment, amenities and other expenses. Croatia has competitive prices when it comes to hiring software developers. 2. The software solution that you actually need. All the features will be done per your request. No unnecessary or missing ones. Our experts have years of experience designing, developing, testing and deploying software across many industries. We use a wide array of technologies. We also offer business analysts, devops engineers and product owners for hire, if your project requires their expertise. 3. Time zone and communication. Being able to communicate clearly during your and our working hours is of great importance. That’s why, if you are in the United Kingdom or European Union, the CET time zone (Central European Time) makes Croatia the ideal destination for nearshore outsourcing. Close and affordable. All our team members speak fluent English, as well as write all the reports, software documentation and other relevant documents in it. 4. Teams that are flexible and scalable. You can expand or reduce your dedicated or augmented team according to your needs . This is just one of the advantages compared to in-house employees. The flexibility that we offer enables you to respond more quickly to your project requirements. Is It Worth To Invest In Nearshore Outsourcing? Yes, absolutely. The data speaks for itself: Nearshoring in the UK A UK government report found that there is a significant lack of skilled labor when it comes to data skills. Almost half of surveyed businesses (48%) are recruiting for roles that require the aforementioned skills, but under half (46%) have struggled to recruit for these roles. 68% reported a lack of advanced digital skills. The need for skilled IT and tech labour is only going to increase: Source: Mordor Intelligence Nearshoring in Germany The nearshoring trend is growing with each passing year. In 2019, 77% of German enterprises nearshored their software development in Europe. The 2024 German IT Sourcing Study shows that nearshore outsourcing is expected to grow significantly, with 44% of organisations planning to increase this outsourcing model . The benefits of cost-effectiveness, available talent pool and proximity are clear. Nearshoring growth in Germany. Source: Whitelane.com Nearshoring in Switzerland Switzerland’s software development market size is forecast to reach $15219 Million by 2030. The Swiss software industry study shows that near a third (30.6%) of respondents indicated that they are likely to outsource to nearshore providers – either to hire personnel or engage contractors. IT and software nearshoring trends in Switzerland. Source: iwi.unibe.ch Nearshore Software Development in Croatia Why choose Croatia? What are the benefits for your software development needs? Croatia has a great talent pool of engineers Croatian engineers invented: The pen, The water cannon, The zeppelin, The torpedo, The world’s first electric sports car, Pay-by-phone parking and more. Here are just some of the global brands Q agency’s engineers and designers worked for: Cost-effectiveness Western European and UK companies nearshoring to Croatia can save up to 50% compared to hiring on-site. These cost reductions are possible because the cost of living in Croatia is lower. Croatian employees in the IT and software development sector earn more than those working for local clients. This benefits us both. Cultural fit and communication Croatians live a western lifestyle and are used to working with people from all around the world. This is mostly because Croatia has been a top tourist destination for years. This is why we ensure seamless integration with your company’s culture and workflow. Croatia is the #5 country in the world with very high proficiency English skills , and the only one in Central and Southeast Europe. Quality is guaranteed We are certified for: Quality – ISO 9001:2015 Security – ISO 27001:2022 Privacy – ISO 27701:2019 Q agency has been awarded as the number 1 employer for 3 consecutive years in Croatia. If you face a shortage of IT professionals like software developers, data engineers, UX/UI designers, business analysts or project managers, nearshoring with remote teams is an excellent solution. The benefits are clear. Last, but not least, we organise discovery workshops and would love to visit you at your headquarters or invite you to Zagreb, whichever is the best for you. Contact us today to discuss your nearshoring needs: Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 4, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 4, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # New office in NYC - Tech Consulting and Software Engineering URL: https://q.agency/blog/new-office-in-nyc/ Q opened a new office in New York City to support its continued growth and provide high-quality service to clients across the US. New office in NYC | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > New office in NYC New office in NYC January 29, 2019 — 1 min read Great news! As of January, we are happy to call New York City our new home! Our new oice will allow us to continue our growth and provide our clients with the highest level of service in the US, just like we did for Coca-Cola, Facebook, Walmart, United States Postal Services, and others. If you’d like to discuss new business opportunities or just grab a coee with us, feel free to contact Adrian Keindl , our new VP East Coast. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 29, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 29, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # New Year, New Office: Serbia, Here We Come! - Tech Consulting and Software Engineering URL: https://q.agency/blog/new-year-new-office-serbia-here-we-come/ Q opens a new office in Belgrade, Serbia, expanding its software development team and growing its presence across the region. New Year, New Office: Serbia, Here We Come! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > New Year, New Office: Serbia, Here We Come! New Year, New Office: Serbia, Here We Come! February 7, 2022 — 2 min read We hope you are having an amazing start of 2022! We definitely are because we can oicially announce our new Q Office in Serbia . If you haven’t figured already – we have big plans for this year. Why Serbia? The IT industry in Serbia is growing at an annual rate of 25 percent . Its total exports amount to over 1 billion euros annually which means that the Serbian IT sector surpassed their top performing agricultural sector . According to The International Trade Administration Serbia generates 10 percent of its GDP from the ICT sector, employing more than 28,000 people. Many world-famous companies outsource software development to Serbia, some of which even opened their satellite oices there, most famous being Microsoft , IBM , and Intel . For the past few years, Q has been collaborating on projects with partners from the entire region and has had positive experiences working with IT professionals from Serbia. That being said, we decided to broaden our network and open an oice in Belgrade, and as well to hire 30-50 employees in 2022. So stay tuned and follow our Careers Page ! Why Q? We’re a full-service software agency that oers various services such as: Strategy & Discovery UX & UI Design Web Development Mobile Development Complex Solutions VR / AR Working on numerous technologies, some of which are: iOS, Android, Flutter JavaScript – Angular, React, Vue, Node PHP – Symfony, Laravel, WordPress Java Ruby .NET Clutch ranked us in the Top 15 companies worldwide and we also got The Best Employer of 2021 and 2020 award . Based on all of the good results we had in the past couple of years, it made sense for us to expand our oices outside of the Croatian border. Just four months ago we opened our London Oice . Our new Oice in Belgrade will help us become a global agency that hires Qumans around the world. The future Opening a new oice in Serbia will open a whole pool of new developers we will have the opportunity to employ. With the plans we have for our ever growing projects – we will definitely need them. We will be looking for Front-end , Back-end and Mobile Developers , as well as Project Managers , Product Owners , etc. As we already said – we have big plans for the future. If you want to know more, contact us at hello@q.agency . Marta Culjat Marta is Talent Acquisition Assistant at Q agency. She is a graduate Psychology student so when she is not working she is trying her best to make herself start writing her thesis. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 7, 2022 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 7, 2022 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # NGXS — Initial impressions of an Angular state management solution - Tech Consulting and Software Engineering URL: https://q.agency/blog/ngxs-initial-impressions-of-an-angular-state-management-solution/ Explore NGXS for Angular state management, including selects, reusable state models, actions, SubState, and Redux architecture. NGXS — Initial impressions of an Angular state management solution | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > NGXS — Initial impressions of an Angular state management solution NGXS — Initial impressions of an Angular state management solution December 12, 2018 — 6 min read Most of my frontend work is done in Angular but I make it a point to get familiar with other frameworks as well, like React for instance. After going through a rough time managing an ever-expanding state with Behavior Subjects on one project, we decided to give the Redux approach a try for building a big business application on a dierent project. While researching whether to use NGRX or NGXS , the current best solutions for Redux like state management for Angular, I got the impression that NGXS has better “integration” with Angular because of its object-oriented nature. NGXS makes it very easy to get started. The concept is intuitive for people that have used Redux before but is tailored for Angular developers. A circular control flow traveling from a component dispatching an action, to a store reacting to the action, back to the component through a state select. This is not a NGXS tutorial ! I’m not gonna go through the installation process or write up a demo. I am however gonna give my opinions on some features and talk about my use-cases. Selects Selects are functions that slice a specific portion of the state from the global state container. Using them is very useful in an application. They allow you to read state parts of interest from wherever you need, be it a service or a component. import { Select } from '@ngxs/store'; import { UserState, UserStateModel } from './user.state'; @Component({ ... }) export class UserComponent { // Reads the name of the state from the state class @Select(UserState) list$: Observable; // Uses the pandas memoized selector to only return pandas @Select(UserState.getUsers) user$: Observable; // Also accepts a function like our select method @Select(state => state.user.list) user$: Observable; // Reads the name of the state from the parameter @Select() user$: Observable; } Since the Select is consumed as an Observable it gives a very natural feel inside the Angular ecosystem. It is also great to use with the Angular async pipe . An interesting use case I have encountered is to allow for a selector to be reused to select from States that have the same structure: export class SharedSelectors {     static getEntities(stateClass) {     return createSelector(     [stateClass],     (state: { entities: any[] }) => {     return state.entities;     });     }​     } Same structure States One of the first things you do when you start to develop an application is to manage CRUD functionalities for several entities. Let’s say we start with only stand-alone entities. In NGXS each entity would require a State and in turn a state model. In our case we went for something like this: interface UserStateModel { filtered: string[]; item: User; list: User[]; searchTerm: string; selected: string[]; } This structure enables us to keep track of the list of users (list: User[]), which ones are selected by pushing their string identifiers in an array (selected: string[]), which ones match our search term, also by pushing their string identifiers in an array (filtered: string[]), and a single user (item: User) to manage in a form. This was the same for all stand-alone entities we wanted to manage so we created a reusable state model with a generic type: interface EntityStateModel {     filtered: string[];     item: T;     list: T[];     searchTerm: string;     selected: string[];     } But this only makes the state model reusable. What about the States them selfs? Each State still needs actions to manage the entity’s state data. Since the State models are pretty much the same, the actions between States will have the same logic as well. Unfortunately, we need to write the “same” action methods for each entity State and link them to actions specific to that entity: @State>({     name: 'user',     defaults: {       // default values     }   })   export class UserState {     @Action(CreateUser)     createUser(       ctx: StateContext>,       action: CreateUser     ) {       // Action logic     }   }...@State>({     name: 'event',     defaults: {       // default values     }   })   export class EventState {     @Action(CreateEvent)     createEvent(       ctx: StateContext>,       action: CreateEvent     ) {       // Same action logic     }   }>>>> The more entities you need to manage the more code gets duplicated. To deal with this problem, we created an abstract EntityState to contain all the logic and make each entity State extend it: @State>({     name: 'event',     defaults: {     // default values     }     })     export class EventState extends EntityState {     @Action(CreateEvent)     createEvent(     ctx: StateContext>,     action: CreateEvent     ) {     this._createEntity(ctx, action);     }     }>> The _createEntity is a protected method of EntityState that contains the entity-agnostic logic. Now we can just call the entity-agnostic methods in the entity-specific State action methods. There is an advanced feature called composition but it does not fit this use case. It is used to share actions between States. Since our use case has stand-alone entity States, all the actions are entity-specific. We are using an advanced feature called SubState to manage nested objects or to reference relationships between stand-alone entity States. We might be interested in what events a certain user is attending. To achieve this we add a UserEventState that has a model similar to the EventState: interface UserEventStateModel {     filtered: string[];     list: string[];     searchTerm: string;     selected: string[];     } The UserEventState is added as a child state to the UserState and keeps track of the user events in the list array by event string identifiers. To fetch the Event objects from the UserEventState, the Select would then look something like this: @Select([EventState.getEvents]) static getUserEvents(state, events) { return events.filter(event => { return state.list.indexOf(event.id) !== -1; }); } This way we keep a single point of truth, which is one of the pillars of Redux architecture. Conclusion NGXS is a great tool to manage state in an Angular application. Once you setup your State structures and actions, it is fairly easy to build on. The State is the brain and the components have little to no logic in them. They just call actions which the State resolves and updates the state accordingly. Since the components are subscribed to the state updates via the Selects, the changes are viewed immediately. We’re having a lot of fun working with NGXS and are still exploring how to manage things. If any of you find this useful be sure to comment, I’ll be glad to answer any questions as well and if anybody sees that we’re doing something wrong, please tell us how to improve. Nikola Vranesic A hardworking, enthusiastic web developer who knows React, Angular, and Node. He focuses mostly on generics, abstractions, and reusability, but is continuously expanding his knowledge and sharing it with his team. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 12, 2018 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 12, 2018 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # No-Code/Low-Code Solutions - Tech Consulting and Software Engineering URL: https://q.agency/blog/no-code-l-ow-code/ No-code / low-code methods of development compared with classic development methods on a simple Flutter application. No-Code/Low-Code Solutions | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > No-Code/Low-Code Solutions No-Code/Low-Code Solutions August 2, 2022 — 13 min read No-code No-code is a software development method that allows users to create applications through visual development interfaces without writing any lines of code. Nowadays, no-code platforms offer endless solutions. With basic logic, simple interfaces, and drag-and-drop pre-made components , it is possible to create anything, from websites to mobile applications, without any coding knowledge. Furthermore, it allows users with no tech skills to develop an application or a prototype for a specific use case. Low-code On the other hand, low-code is a software development method that allows users to create applications through visual development interfaces but with an option to add some custom code or scripts. Low-code is something between no-code and classic development. With low-code platforms, developers of any skill level can be very productive and create applications rapidly, focusing on adding some unique features to the app and leaving the basic stuff to the platform. Also, low-code platforms give the possibility to create an application without any coding at all . Differences No-code and low-code solutions are designed with the same main goal: to speed up application development. Both are based on building applications through graphical user interfaces and drag-and-drop editors, but there are also some key differences like: Target users – No-code solutions mainly target business users or so-called citizen developers, and low-code targets developers. Ability to make custom changes – Low-code solutions allow users total customization and implementation of custom features. At the same time, no-code is limited to prebuilt components and templates and has no option of adding custom functionalities. Integration of applications – Low-code platforms offer great integration functionalities, while no-code platforms are often limited to a few or no options. Education – Any user can utilize no-code because no technical knowledge is required, and low-code assumes that users have some developing skills and experience, so the education for employees will be longer. Pros Increased development speed and productivity – Development speed sure plays a very important role in the competitiveness of IT companies, and that’s why no-code and low-code platforms stand out. With visual programming, drag and drop pre-made components or even using prebuilt templates , the most coding, or all, is eliminated. Also, with this build process, all these components or templates are pre-tested to work perfectly. Lower cost – Developer hours are expensive, and no-code and low-code require fewer programming skills than classic development so that companies can hire fewer IT experts. Also, it enables citizen developers to develop apps independently and minimizes costly IT involvement resources. Easier to understand – For example, in no-code/low-code development, you don’t have to know how to use the terminal and don’t have to learn complicated programming syntaxes. Furthermore, it is not mandatory to know the Git-flow in your projects, as you can commit and push all changes that have been done with one click. You only need to know what the flowcharts of the platform you are working on look like and how they work, and with a quick view of the documentation, you know your next steps. Cons Limited flexibility and customization – No-code platforms limit users to using only the built-in functionalities, so it’s not possible to implement some custom features or elements. Low code platforms are a bit more flexible regarding that, but still not as classic development. Vendor lock-in – There is a possibility that a vendor locks you in their platform because of their generated code that it’s impossible to maintain outside the platform, in case they even offer the feature to get the source code. Security concerns – Users don’t have complete control over data security or access since most platforms don’t give full access to the source code, and most of the code remains “hidden”. If the platforms don’t have security protocols that define secure access to the data and protect it from cyberattacks, applications are exposed to malicious attacks and data breaches. Also, applications are developed with reusable code. If this code is insecure and used by users without much knowledge, security issues are potentially present in all the new applications. No-code / low-code platforms There are many no-code platforms. Since most platforms have similar base features, the biggest difference is what is included in their plans and, of course, the pricing. We will compare and describe some popular no-code and low-code platforms. Platform features Visual modelling tools – with drag-and-drop interfaces and pre-made components to rapidly build your applications and instantly see how they look on the web, desktop, mobile, etc. Reusability: Mostly, all parts can be reused in new applications to improve development speed. Integrations: Integrate with all kinds of APIs and web services to extend the functionality of applications. Bubble The Bubble is the most popular drag-and-drop no-code development platform, and it’s mostly used for no-code web development. It enables “pixel perfect” design, inserting images, icons, videos, and maps without any knowledge of classical frontend languages HTML and CSS. Dynamic content generates data fetched from services like Google, Stripe, and Facebook. With Bubble, developers can make informed decisions, grow the audience of web pages, and process payments with integrated software like Stripe. Once finished, translate your application to more than 80 languages with a few clicks . Bubble can be used alongside other JavaScript plugins or connected to API and No-code API connector. Up to 40 developers can work on applications together and get personal permissions and access rights. When multiple developers work on a project, they can work in real-time with others or work privately with password protection, so no one else can access it. Zeroqode , a suite of no-code products, has a great feature called Air Native, which allows you to convert the existing Bubble application to both IOS and Android native apps and publish them to stores. All the updates on Bubble immediately appear on the mobile applications too. Mendix Mendix is a powerful all-in-one, low-code, cloud-native platform that helps you create top-quality software by automating and abstracting the development process. With dedicated IDEs and a common visual language, build resilient and scalable applications and deploy them just with a click on a public or private cloud. Powered with AWS intelligent and data services, it’s possible to connect cognitive and AI services to applications to modernize customer experience, improve operational effectiveness, and reduce costs. With end-to-end processes, automation integrated logic and data from anywhere make your apps extensible and open for different platforms. Mendix offers excellent resources for learning, like extensive documentation and educational videos. Getting certifications based on your skills and knowledge of the Mendix platform is also possible. AppGyver AppGyver is a no-code platform that is based on React Native. AppGyver uses Composer Pro and can compose applications in a way that no-code developer wants to build applications. This platform provides over 500 components to a user, and by combining elements with unlimited logic, this could be one of the best no-code platforms currently available on the market. AppGyver is strongly based on a drag-and-drop builder, and logic is built by dragging and dropping blocks and connecting them with lines. It can be used with sensors, field operations, data functions, permissions, user inputs, animations, and anything a user can think of. Formulas are used for logic, and AppGyver provides custom deployment pipelines, which are helpful for some bigger projects. AppGyver provides the ability to add custom code to the no-code applications, and you can add JavaScript code which can be used for more complex logic tasks. Projects can be integrated with Firebase and any other APIs. It is also possible to download the generated source code. A significant advantage of AppGyver is compatibility with all platforms – mobile devices, tablets, desktops, laptops, and TVs! Betty Blocks Betty Blocks no-code platform allows anyone to build awesome-looking and powerful applications. Create user interfaces based on visual components that look great on any device and import your own component sets to give the app your brand look. It can also be combined with any JS framework (ex., Angular, Vue.js, etc.) for extra flexibility. Visually build complex data models with dragging and dropping relationships between models and easily integrate with any external source. All developer roles work from the same cloud-based IDE, and platform updates are performed automatically while all user applications run. There is no versioning, and users always access the latest version and don’t have to migrate data. In addition, developers have the option to turn custom code into building blocks, which everyone in the organization can then reuse. Betty Blocks is the first and only no-code platform to be ISO27001 certified. Since all users of the same plan automatically work on the most updated version of the project, the most demanding one sets the lever for security, and all other users benefit from it. Adalo Adalo is a no-code platform based on three basic concepts: components, actions, and database. Drag and drop reusable pre-made components to create your application’s user interface. Set up dynamic actions to make your application functional. Connect your screens with animations, add push notifications, add authentication, and integrate with Zapier to trigger actions in many other applications. Set up your application’s database with simple spreadsheets, set object relationships, and manage user data. It is also possible to integrate with any API. Adalo has also created a Component Marketplace that collects components made by other developers that can be reused. React Native developers can create new components and upload them to the marketplace. Microsoft Power Apps PowerApps is Microsoft’s low-code development platform. It is integrated with other Microsoft applications and makes it easier to get data between them. Build apps quickly with a drag-and-drop user interface and prebuilt user experience components. Develop and manage AI models with step-by-step documentation. With more than 500 prebuilt data connectors , Microsoft’s Dataverse and Azure Functions integrate data and systems you already use. Also, with Azure DevOps you can manage the development of the applications, and with Azure API management, you can integrate with APIs and easily extend features of the application. As the example application is built in Flutter, here are some flutter-specific platforms . Flutter Flow FlutterFlow is a low-code platform that can be used to build Flutter apps using a no-code/low-code approach. What has been seen in research, FlutterFlow is the most advanced platform with the most advanced features. With the integrated possibility of adding custom widgets and exporting generated code, FlutterFlow could be used for more advanced applications in the future. FlutterFlow is based on the classic development approach. You have to set UI, the database, the logic, and add rules (rules represent backend in no-code). Just like in the classic Flutter approach, everything is based on widgets. In FlutterFlow, several features are advanced in comparison with other no-code platforms. The main feature is that you can add custom flutter code into the application to build custom widgets, components, and functions. With just a few clicks, integrate with Firebase or any other API. Furthermore, connect to GitHub and work with other developers on projects. Also, you can share your projects and applications quickly with just a link. Last but not least, you can download the generated source code and modify it additionally. Teta Teta is a low-code platform for mobile applications. A simple interface allows users to create applications with attractive designs and a smooth experience using a browser, smartphone, or an open-source tool. Build custom widgets with Flutter, import external packages, mix visuals, and classic development. It’s integrated with Supabase, an open-source Firebase alternative, for authentication and a relational database in applications. Real-time collaboration is also available, so users can manage project team members and collaborate on projects simultaneously. Also, it’s super easy and quick to share applications with anyone with just a link. Some other features that Teta offers are project publishing to App Store, Google Play within Code magic, payment getaway, GitHub integration, etc. Nowa Nowa is a no-code Flutter platform that provides building and customization of UI and functionalities. It is simple to use and, best of all, free. With a flexible UI designer, it’s easy to drag and drop widgets, customize and animate them, and make the application fully functional by using groups of already-made blocks. Moreover, if you want to develop something on your own or something still not supported in Nowa, it’s possible to generate the entire source code from the application. Also, one of the upcoming features is importing an existing Flutter project and continuing to work on it. Another feature is the Market store, where many templates and plugins to increase the speed and quality of development can be downloaded. Developers can also submit plugins and templates to the market store using Nowa API and sell them or offer them for free. Integration with any API is possible, and applications can be published to any store. Example App We created a simple Flutter Firebase authentication application with a classic and no-code development method, using the FlutterFlow no-code/low-code platform. First, we created a simple design in Adobe XD which we followed while building the application. ​​ After setting up the Firebase project, we created the application with FlutterFlow and a classic development approach. Here are some main differences between these two approaches. With FlutterFlow, we used a prebuilt template for Firebase authentication and just changed the design to match the one we defined above. We also connected the project to Firebase fast and straightforward, with just a few clicks, and our application was done and fully functional. On the other hand, with coding, it took us some more time to set up the project from scratch, connect it with Firebase, build the user interface, and code the whole logic. After downloading the source code from FlutterFlow, we compared the generated code with the one we wrote. In generated code, all the values are hardcoded, all the widgets are kept in the same files, and no state management technique is used. The project architecture is not the cleanest, and SOLID principles are not quite followed even though the app is fully functional. Here we compared two code snippets for signing in. You can see in generated code that FirebaseAuth is instanced in every method, error handling is not the best, and repository or facade patterns are not used at all. In comparison, everything is nice and clean in the written code, following the good practices as it should be. FlutterFlow generated code email_auth.dart – link Auth_util.dart – link Written code auth_repository.dart – link auth_repository_impl.dart – link Lastly, for creating applications with FlutterFlow, some basic coding and Flutter knowledge is still needed, so you will have to invest some time in education. Here is the GitHub link to both projects, so you can take a deeper look at the source code here . Conclusion To conclude this broad topic , no-code and low-code solutions became great options. There are many platforms nowadays that offer anyone to launch their ideas. However, as we already mentioned above, for any bigger and more complex applications or systems, the classic development approach works much better and specific skills are required, so there will always be a place for developers and their proficiency. Co-author: Patrik Pralas –  tech enthusiast who likes to explore new things and take on new challenges! Recently became a new member of the mobile team at Q agency after working for a year in a Support department as a Technical support engineer. Outside of work, he is studying Computer & Embedded Systems Software Engineering at Zagreb university of applied science after finishing his bachelor’s degree in the field of Electrical engineering. Noa Tubic Creative and open to new challenges, making mistakes, and trying again, Noa is working as a Flutter developer. If not coding, you can find him making music in his bedroom studio. In addition, he enjoys skiing, hiking, and many other sports activities. Also, to mention, he is a big sneaker fan. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic August 2, 2022 — 13 min read Fast is easy. Provable is the product. Zlatko Matokanovic August 2, 2022 — 13 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # October Frontend Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/october-frontend-meetup/ Q agency’s October Frontend Meetup explored Sapper, SSR, and JavaScript frameworks through a technical talk and developer panel discussion. October Frontend Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > October Frontend Meetup October Frontend Meetup October 7, 2019 — 1 min read In collaboration with the Frontend Zg, we came up with an idea to hold monthly Fronted Development meetups in our oice, where employees could learn from each other and the external community. This time we had a new format of the meetup with one talk and a panel discussion on the topic. Mario Janković held the talk and it was about “Introduction to Sapper”.He says: “A Framework built on top of a framework is not news. Next, Nuxt and similar frameworks have already shown that there is a target audience for this type of web application frameworks. Sapper from Svetle is a new player on the scene of SSR compatible application frameworks, and even though it’s in the early beta version it presents the easiest alternative so far.” After the talk, we had a panel of developers ready to answer all of the questions about Sapper, SSR, and javascript frameworks. The greatest benefit was the ability for our front-end developers to engage with our guests and each other about topics that they might not have been able to find help with on their team or in their department. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 7, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 7, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Official London Office Launch at The Shard - Tech Consulting and Software Engineering URL: https://q.agency/blog/official-london-office-launch-at-the-shard/ Q officially launched its London office at The Shard, celebrating its growth and partnerships with clients and businesses across the UK. Official London Office Launch at The Shard | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Official London Office Launch at The Shard Official London Office Launch at The Shard June 20, 2022 — 7 min read Opening a London office was an important milestone for us, so we wanted to celebrate it in the best way possible to mark our continuous growth. For the occasion, we held a gala presentation in the ever-bustling British metropolis and opened the door for other Croatian companies to enter the robust UK tech market worth over $1 trillion . Q’s New Office in London Q’s new office in London is situated at The Office Group (TOG) in London’s Borough Yards. With things returning to normal in the UK post-Covid-19 restrictions, we weren’t able to celebrate it the proper way until recently. Now that the masks had fallen, it was time to throw the party not just anywhere, and not just in any location, but in the heart of London and the tallest building in the United Kingdom and one of the tallest skyscrapers in Europe — The Shard . Southwark, London Since it’s one of the most iconic buildings in London and situated in the same neighborhood as our office, Southwark , we decided that no other location for the event would be better than The Shard . This 300+ meter tower of glass and steel was the perfect place for us to hold a gathering for our clients and friends, as it, with its size and symbolism, represents the modern era of a modern city, which London certainly is. Over 100 people attended the event, and among them were the representatives of UK companies with whom we’ve been collaborating for a while now. To name a few, we had guests from BBC , The Times , Smart Pension , RVU , and Money.co.uk . In addition to our existing partners and their representatives, the event was attended by guests from other companies, whether global or UK, to which we wanted to present Q. For example, IBS Software, State Street , OysterVP , Pathfinder VP, and Lloyds Bank , to name a few. Journalists from the UK and Croatia also attended the whole event. Two of the finest Croatian tech analysts and journalists , Bojan Muscet and Dragan Petric (Executive Editor at Bug ), flew to London from Croatia, whereas regarding British journalists , we had the honor to host journalists such as Jasmine Birtles, BBC’s finance journalist, and Alice Dogruyol, Daily Mail’s columnist and PR Executive, as well as journalists from the Drum. Event Programme The distinguished guest who opened our Office Launch was the Croatian Ambassador to the UK, Igor Pokaz , who introduced us to the fantastic evening ahead with his speech. Igor Pokaz – Croatian Ambassador to the UK The Launch started at 6 pm, and after the welcome drink and canapés, our founders Filip , Vedran , and Dalibor gave speeches about how they founded the company, what Q is, how we work, and what our culture is like. Our founders Filip, Vedran, and Dalibor, and me Vedran Tolic , one of our Founders and Chief Business Officer, followed by presenting who we and our customers are, what we do, our core strengths, and the recognition and awards we’ve been awarded. Themed ‘ Why Here Why Now ‘? I explained how Q is poised to take advantage of the market opportunity presented by this $1trillion valuation. I presented why I joined Q. More importantly, I explained how we want to combine our exceptional nearshore talent and capability with onshore talent in the UK to help our customers and prospects alike achieve better business outcomes using our Q Symphony Methodology to deliver new products and services. Too many agencies focus on just building software. That’s a race to the bottom we’re not interested in being part of. Instead, we’re passionate about being long-term innovation partners in partnership with our customers . Therefore, the position and impact we want to accomplish are specifically to help our customers overachieve in every way possible. “The Shard Event was amazing, a fabulous array of people with different views on Technology. I’m really enjoying working with an Agency with a similar culture to ourselves, who strive to work hard and play hard and achieve the best outcomes for their clients.” Rai Eastham, The Times Following my presentation, Filip Ljubic , our CEO gave a very personal account of how he, Dalibor and Vedran came together to found Q and why the name Q. He also went into some detail about why Croatia is a great place to source digital talent from a location perspective. UK companies can take advantage of Croatia’s engineering skills, western culture and mindset, English proficiency, and the fact that the country is a top tourist destination with great connectivity. He concluded by asserting that Croatia is the best thing since sliced bread. We think Game of Thrones and the Dalmatian Coast is a definite proof of that! After the Founders’ Story, our longtime partners held their client testimonials . The representative of Money.co.uk was their CEO , Bojan Radlovic , whereas Smart Pension was represented by their Engineering Manager , Karina Kajelova . On behalf of The Times spoke Lewis Buttress, their Product Director. We would also like to use this opportunity to thank our esteemed guests and partners who shared with over 100 people what it’s like to work with us. The star of the most famous Wimbledon final in history, Goran Ivanisevic , was the special guest of the evening. Initially, Goran was supposed to talk in person, but unfortunately, he couldn’t attend the Launch — being the official coach of Novak Djokovic, he had to go to Monaco instead. He did, however, connect via video call and hold a speech, and even that was enough for Goran to make us laugh and entertain us with his charisma and inspiring stories that he’s so well-known for around the globe. Throughout the evening, we had our sommelier Matt who was in charge of wines and wine tasting. Since Croatia abounds in beautiful hills and delicious wines, we did not miss the opportunity to present them either. So we were toasting all evening with Croatian wines Alba and Grimalda by the Matosevic winery . Matt talking about wine To keep the party going, we put Old Pilots Gin into action! The gin, just like the wines — also made in Croatia, was more than successful in keeping the atmosphere warm, but that doesn’t surprise us considering that it was awarded a Gold Medal in San Francisco World’s Spirits Competition last year. We continued the after-party at Redwood Sports Pub and Kitchen opposite the Shard. Even with the change of venue, a lot of our guests stayed and partied with us until Redwood closed. Old Pilots Gin We’re Open for Business in London In summary, this event served the following purpose. Officially launching our London Office, this was an informal evening to thank our customers and an opportunity for customers, prospects, business partners, and the press to get to meet the founders and our team. For a lot of businesses, the pandemic mandated us to work remotely and greatly reduced social interactions that are time-proven ways of building deeper business relationships. We’re proud that in spite of the pandemic, our customers and Q have achieved impressive growth and delivered new products and services together. With the opening of our London office , we expect to grow our footprint in the UK and continue to deliver innovative products and services that deliver business outcomes for our UK Clients . Feel free to reach out to us at hello@q.agency if you’re looking for an agency that will help you reach your business outcomes faster. Michael Fasosin Michael Fasosin recently joined Q to lead landing and expanding in the UK. Married to Katie with four children, he’s an entrepreneur and investor across multiple verticals following the exit of a UK – Dutch software/agency he cofounded – Spindrift. With over 27 years of insight, Michael sells and shapes business propositions and helps scale businesses to exit. He loves trail runs, cycling, and spending quality time with his family and friends. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 20, 2022 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 20, 2022 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # One SDLC, Three Realities: Navigating Enterprise Software Delivery Across Teams - Tech Consulting and Software Engineering URL: https://q.agency/blog/one-sdlc-three-realities-navigating-enterprise-software-delivery-across-teams/ Read more on how production, dedicated, and support teams shape the software development life cycle (SDLC) across enterprise projects. One SDLC, Three Realities: Navigating Enterprise Software Delivery Across Teams | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > One SDLC, Three Realities: Navigating Enterprise Software Delivery Across Teams One SDLC, Three Realities: Navigating Enterprise Software Delivery Across Teams July 10, 2025 — 8 min read From foundations to fixes, this is how production, dedicated, and support teams shape the software development life cycle (SDLC) across enterprise projects. In large-scale enterprise environments, software development is never one-size-fits-all , and neither is the way teams interact with the Software Development Life Cycle. For a project manager, one of the most critical (and often underappreciated) aspects of the role is understanding how different teams experience and influence the SDLC and how that disparity impacts delivery, collaboration, and outcomes. This blog provides insights into how SDLC practices and visibility vary across three common types of teams in enterprise settings: the Dedicated Development Team, the Production Team, and the Support Team. Each works under very different conditions, and Project Managers adjust their approach to ensure efficiency and cohesion across these teams . What is SDLC in the Enterprise Context? The Software Development Life Cycle (SDLC) is the structured process enterprises use to build, test, deploy, and maintain software . Whether the team follows Waterfall, Agile, SAFe, or hybrid models, SDLC provides a repeatable framework for delivering value. But here’s the catch: not all teams interact with the SDLC in the same way . In fact, many enterprise teams operate with vastly different levels of access to documentation, decision-making power, and process transparency. Team 1: The Dedicated Development Team “We build and evolve projects, but we follow the client’s playbook.” What they do: These are skilled development teams with access to client documentation and processes. They are responsible for building new features, maintaining modules, and launching new projects. However, while they operate within the defined SDLC of the client , they are often not decision-makers in how that process is structured. More examples of our Dedicated teams and how they operate can be found in the case studies: Digital-first pension and investments platform The Sun Dedicated Team Web platform for financial support and advice Custom web platform for travel enthusiasts Project Manager’s perspective: These teams can deliver efficiently, but they rely heavily on well-maintained documentation and external guidance. They’re often constrained in proposing SDLC improvements — even when they identify clear gaps or inefficiencies. They execute well, but there’s a ceiling to their influence . Key strategies for the Project Manager: Encourage feedback loops to capture recurring process pain points. Maintain a structured knowledge base and update it regularly — treat documentation as a first-class citizen . Establish regular alignment sessions with client-side product owners or architects to close the gap between execution and intent. Team 2: The Production Team “We define, build, and shape the process.” What they do: Production teams are responsible for developing solutions from the ground up. They typically have a clear understanding of the SDLC , collaborate closely with architects and stakeholders, and are empowered to influence and adapt the process itself . Case studies for our production teams are available on these links: Digital transformation of the leading global supplier in the energy industry Developing a web platform for 10+ million users Building the website and mobile app for the world’s premier luxury destination Project Manager’s perspective: This is where true agility and innovation can thrive — if properly supported . These teams are capable of piloting new tools (e.g., automated testing, CI/CD) and refining ceremonies (e.g., retros, backlog grooming). The risk? Without strong guidance, they can fall into “process tinkering” without clear alignment to business goals. Key strategies: Reinforce process ownership : empower the team to evolve the software development life cycle, but tie improvements to measurable outcomes (e.g., velocity, cycle time). Encourage experimentation , but always collect and review metrics to validate impact. Align their evolution with enterprise goals (security, compliance, scalability), ensuring innovation doesn’t become siloed . Team 3: The Support Team “We’re the firefighters — but don’t ask us how the building was made.” What they do: Support teams work on post-launch issues and smaller updates : bug fixes, hot patches, and minor enhancements. They usually don’t have deep visibility into the client’s SDLC, and have limited context on design decisions or architectural choices. This is why the handover process from a Dedicated or Production team is crucial for the Support team, especially for big milestone decisions such as scope, architecture and release limitations. Examples of projects that were handed over to support teams after a successful production launch are available in the following case studies: Drug shortage tracking app Mobile and Web App for a Training Community New website for luxury car dealership Project Manager’s perspective: Their work is reactive, time-sensitive, and high-pressure — but not always respected as “strategic.” They operate with limited traceability and process alignment , often juggling incomplete or undocumented legacy code. SDLC for them is less a lifecycle and more a series of disconnected support tickets . Key strategies: Implement lightweight SDLC artefacts (e.g., templates for fixes, root-cause-analysis logs, regression checklists). Suggest documentation backflow — when support teams resolve issues, they should contribute back to the documentation or internal wiki. Advocate for support teams to be included in retrospectives or postmortems, giving them a voice in the client’s process evolution. Comparing Realities: Best Practices, Pain Points, Similarities & Differences For project managers, understanding the nuances between teams is key to managing expectations, improving collaboration, and delivering consistent results . Below is a breakdown of best practices, common challenges, and key comparisons between the three teams. Best Practices by Team Team Best Practices Dedicated Development – Maintain up-to-date documentation and onboarding material. – Conduct regular sprint reviews and demos to stay aligned with the client. – Foster feedback loops even without direct decision-making control. – Use internal retrospectives to improve process adherence. Production – Invest in automation early (CI/CD, test pipelines). – Use iterative planning and retrospectives to fine-tune the SDLC. – Include business and technical stakeholders in backlog grooming. – Pilot new SDLC improvements and document outcomes. Support – Implement RCA (Root Cause Analysis) templates and maintain an issue resolution log. – Prioritise backlog hygiene and ticket quality. – Establish clear SLAs and incident response processes. – Share knowledge with the Dedicated/Production teams. Common Pain Points Team Pain Points Dedicated Development – Limited visibility into broader product goals or business logic. – Dependency on the client for clarity , often leading to delays. – Misalignment between internal agile execution and external waterfall planning. Production – Risk of over-engineering or process bloat. – Balancing agility with governance in large enterprise settings. – Managing early-stage uncertainty while building scalable solutions. Support – Limited system context or rationale behind legacy decisions. – Pressure to fix issues without comprehensive documentation or access to source teams. – Reactive workload with little room for process improvement. Key Differences Across Teams Team Type SDLC Visibility Process Influence Work Nature Stakeholder Access Documentation Use Dedicated Dev Moderate (execution-focused) Limited Feature-driven, planned Indirect Consumes and maintains Production High (participates in definition/evolution) Significant Visionary, structured planning Direct (shapes requirements) Creates foundational docs and standards Support Low (isolated from origin) Very limited Reactive, issue-driven Minimal Lacks or builds ad-hoc What about similarities across teams? Despite their different roles, these teams share some common traits : Need for Clarity : Whether it’s fixing a bug or launching a new product, all teams depend on clear documentation and requirements. Reliance on Collaboration : Success hinges on effective communication with adjacent teams (developers, SA, QA, DevOps, Business Analysts, etc.). Desire for Impact : Even support teams want to know their work contributes to the product’s evolution — not just firefighting. Tool Overlap : Most teams work within the same tooling ecosystem (e.g., Jira, Git, CI/CD systems), though their usage varies. The Project Manager’s Role: Bridging the SDLC Divide When managing cross-functional teams in an enterprise environment, Project Manager’s role becomes more than just a schedule-keeper . The Project Manager becomes a process interpreter and unifier. A way to approach: Team Visibility Influence PM’s Role Dedicated Moderate Low Advocate for clarity, sync, and inclusion in planning. Production High High Facilitate experimentation, validate process improvements, align with business value. Support Low Minimal Provide structure, push for documentation, and structure the handover session to give as much information about the project and client. In all cases, Project Manager’s goal should focus on answering the following: “How can I make this team’s work more visible, more valuable, and more connected to the enterprise mission?” One SDLC, Many Journeys As project managers, our job isn’t just to enforce a process — it’s to make the process meaningful and accessible to everyone . That means: Helping dedicated teams understand their influence beyond code. Supporting production teams in building scalable, modern, and flexible SDLC frameworks. Providing support teams the tools and voice to operate with intent. When tailoring the approach to each team’s reality, Project Managers do more than deliver projects. They build sustainable systems of delivery. Project Managers can’t manage what they don’t understand — and no two teams live the SDLC the same way So it is important to walk in the team’s shoes . Let the dedicated team raise what they’d do differently. Empower the production team to shape the process, not just follow it. Set clear expectations with the client before the handover to the support team. Because when teams align these realities, Project Managers don’t just manage projects better. They create systems that support humans, not the other way around. Ana Cerimovic Project Manager and Project Delivery Team Lead looking after the PM triangle but seeing much more than just budget, scope, and timeline. A happy team is a productive team and people are the key to the project’s success. That is why I like exploring the human aspect of Project Management and its effect on the overall project output. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 10, 2025 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 10, 2025 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Oops, We Did It Again! Q Is the Best Employer, Second Year in a Row! - Tech Consulting and Software Engineering URL: https://q.agency/blog/oops-we-did-it-again-q-is-the-best-employer-second-year-in-a-row/ Q was named Croatia’s Best Employer for the second year in a row, with 98% of employees recommending the company and 94% feeling engaged at work. Oops, We Did It Again! Q Is the Best Employer, Second Year in a Row! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Oops, We Did It Again! Q Is the Best Employer, Second Year in a Row! Oops, We Did It Again! Q Is the Best Employer, Second Year in a Row! December 23, 2021 — 4 min read We are Croatia’s Best Employer for the 2nd year in a row, according to an anonymous survey conducted among our employees by MojPosao , the leading employment website in the region. As well as last year, we competed in the mid-size companies category. And what about next year? We hired over 100 new Qumans this year and plan to at least match that number next year. So we are curious to see what 2022 brings! But first, let’s take a look at our 2021 results . Good old recipe with new improvements A year ago, we implemented Peakon , an advanced employee success platform that converts employee feedback into actionable insights . Our main motive behind every survey is to understand our employees better, especially what motivates them, and put eort into making Q an even better place for all of us! So, since our last participation in this MojPosao competition, which brought us our Best Employer 2020 Award , we diligently measured our engagement drivers through Peakon on a monthly basis and continued to take action. That’s why this year’s award, despite the always fierce IT competition, didn’t come as a big surprise. Anja, our Head of People & Culture So how did we score? Even better than last year. 98% of employees would recommend Q to their friends and family (vs. 93% in 2020) 94% of our employees are feeling engaged at work (vs. 90% in 2020 Our highest-ranked categories are: Challenging work, Loyalty, and Working conditions Our biggest improvements, according to 2021 survey results, are in: Work organization (and we’ve been working on this a lot!) Work conditions (we are happy to oer even better benefits and salaries) Decision involvement (especially regarding familiarity with the company business results and the operations of other departments) What Gets Measured, Gets Managed Peter Drucker said it (or didn’t), but we agree with the saying anyway. 🙂 We have received confirmation that the eort we invest in brings real results. Here are some of the things we measured, insights we had, and actions we took: 1. Corporate Communication: Employees appreciate transparency , even when bad news has to be delivered. When choosing between transparency and ambiguity, always choose transparency, especially in these turbulent times. Through our internal communication app, Jenz, and our video content , such as Kavica sa Sarom , Management Monthly Videos, and Tech Panel, we distribute all relevant information regularly. 2. Personal Growth: It’s defined as the feeling of growing professionally , and it has been shown as a high-impact driver in our company. We’ve seen a significant increase in both Peakon and MojPosao survey results. We attribute this increase to more structured Personal Development Plans, more internal workshops, and plenty of learning opportunities. Time and money invested in personal development are well spent! 3. Loyalty: Employees who adopt company values and goals exhibit higher levels of work enthusiasm , and they form emotional bonds with the organization. We promote our Q values and Q culture in everything we do, and this year we even dedicated an entire month to each of our values. It helped everyone recognize how they could incorporate those values into their everyday work and internalize them. We also reward our employee’s support and loyalty with small tokens of attention… or with great team gatherings. And last but not least, we perceive all of our employee engagement initiatives as a preventative approach to attrition – every little bit helps (to keep talent in the house)! Wrapping up 2021 Thank you, Qumans , for your honest and well-intentioned feedback. For the People & Culture team, this has been a beautiful end of the year. Receiving the Best Employer Award for two consecutive years serves as a motivating recognition that we are doing a tremendously good job when it comes to employee satisfaction and engagement. And we will continue to #DoMore in 2022, as one of our values says. Anja Oppenheim Baresic Anja is HR Manager at Q agency. Also happens to be a psychologist. Passionate about everything human in Human Resources, especially people development and employee engagement. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 23, 2021 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 23, 2021 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q's client medi won "German Innovation Award 2020." - Tech Consulting and Software Engineering URL: https://q.agency/blog/our-client-medi-won-german-innovation-award-2020/ Q and medi celebrate the German Innovation Award 2020 for innovative medical apps, including medi vision, developed by the Q team. Q's client medi won "German Innovation Award 2020." | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q’s client medi won “German Innovation Award 2020.” Q’s client medi won “German Innovation Award 2020.” October 19, 2020 — 2 min read Q and medi are working together on a revolutionary medical app for the past few years. Last week medi won the “German Innovation Award 2020.”. Medi, based in Bayreuth, Germany, is one of the world’s leading manufacturers of medical aids. Medi and Q are collaborating for years on highly innovative med-tech solutions. This year, medi won the prestigious award for the best innovation in Germany – for 2 dierent applications, one of which was built by the Q team. Following the motto “medi. I feel better”, around 2,700 medi employees worldwide help people increase their quality of life. Acting as a catalyst between the medical industry and specialist retailers, medi develops indication-appropriate treatment aids for the patient’s benefit. Innovations result from internal expertise and the interaction of people and technologies. Medi’s innovative strength was honored for the first time in 2020 with the German Innovation Award. It honors cross-sector products and solutions that dier from previous solutions regarding user orientation and added value. Medi has won two innovation awards with its products medi vision and medi companion. The first award-winning application, medi vision, is made by the Q development team. It’s a project where our team carries the entire development process, while our partners from the US provide the 3D measurement technology. Medi vision is a tool for non-contact measurement for compression fittings honored in the category #W2 Excellence in Business to Business – Information Technologies | Industry Specific and Service Softwares. It impressed the German Design Council with its added value for both the medical professional and the patient. The second award-winning application is a health app for lipoedema and lymphoedema patients. This app was also honored in the category #W1 Excellence in Business to Consumer – Medical & Health. It supports lipoedema patients in their daily therapy and is considered an innovation to improve quality of life. We congratulate medi for their success and wish them many more awards in the future. Adrian Keindl Adrian is mag.oec. who combines his economical profession with his love of tech and the processes involved in building high-end digital solutions. He is a multi-lingual expert and the one who always has a compliment in his sleeve, accompanied by a business offer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 19, 2020 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 19, 2020 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Our New HQ in Zagreb - Tech Consulting and Software Engineering URL: https://q.agency/blog/our-headquarters-in-zagreb/ Discover Q’s Zagreb headquarters, featuring unique architecture, flexible workspaces, employee amenities, tech meetups, team events, and a vibrant company culture. Our New HQ in Zagreb | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Our New HQ in Zagreb Our New HQ in Zagreb April 11, 2019 — 3 min read We are the #1 fastest growing software & design agency in Europe by Deloitte. However, we’re not your typical agency — we take pride in doing things dierently. Thanks to our fresh and novel approach, we succeeded to grow 25000% since our founding. Our HQ oice in Zagreb is where the magic happens. 🙂 Architecture & Design Our HQ oice building is located in the center of Zagreb. The creators of our HQ oice building drew inspiration from the Behrens’ AEG turbine factory, 18th-century orangeries, dutch architecture, New York lofts, and Kovačić’s Stock Exchange Palace in Zagreb. The oice is basically divided into three zones: the oice zone, the lounge zone and the conference zone ; all of which are multi-purpose and can easily be transformed to be part of one another. A rather special feature of the building are outer terraces on each floor , which have multiple uses and a great impact on the well-being of our employees. Knowledge Hub The real magic happens at the events which we organize. From local social events to company activities, we want our people to relax, have fun and be active. Those events include many design and tech meetups, conferences, international student visits, themed parties, BBQs as well as casual Friday hangouts, birthday celebrations, movie nights and spontaneous team buildings . — Design & Tech Meetups — Conferences — International Student Visits — Garden parties & BBQs Fun & Lounge Zone A special layer of our eorts is materialised in the Fun & Lounge Zone, which we carefully designed to be an oasis of relaxation and rest for our employees. Here are some of the things our employees can do or enjoy: Playstations Yoga Foosball Ping-Pong Pool Darts Massage & Lounge chairs Showers Oice Essentials We strive to uphold a certain standard in the work environment, which we do by taking care of our employees and their needs. In this fashion we make sure there is daily fresh fruit, premium coee, cereals, snacks, sweets, bottled water and that everyone gets ice-cream on Frozen Friday. What’s it like to work at Q? Here at Q, we take pride in having a dierent approach to attracting talent. We don’t conduct the usual cookie-cutter recruitment process. For instance, it is not uncommon to see a humanity & social sciences major working in our finance department, or a French-language professor working as one of our programmers. Out of all the things that we oer to our employees, our great work environment and fantastic atmosphere are especially well-known and talked-about. Also, we encourage our employees to bring their dogs to work ! We found that keeping dogs brightens the work environment and brings joy to everyone. To make sure that we live what we preach, you should come to Reljkoviceva 4, Zagreb , and see for yourself! 🙂 Want to know more about Q or wanna join our team? Check out 10 Reasons Why Q + Open Positions ! Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 11, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 11, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Our Value(able) Journey, Part One - Tech Consulting and Software Engineering URL: https://q.agency/blog/our-valueable-journey-part-one/ Explore how Q defined its organisational values and culture, using shared principles to guide decision-making, employee behaviour, and company growth. Our Value(able) Journey, Part One | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Our Value(able) Journey, Part One Our Value(able) Journey, Part One December 21, 2020 — 3 min read Values as the Q’s actionable compass Responsibility, integrity, proactivity. Values. Such a powerful yet worn-out word, frequently used by many organizations as a facade only. How come that values constitute practically the core of organizational identity, but we often witness employees behaving completely the opposite? The answer to this question, as well as what the process of describing and embracing organizational values should look like, you are going to find in this blog. Organizational identity and culture as fertile soil for development As an expert extensively engaged in discovering the potentials of individuals and finding appropriate companies for those individuals’ development, I came to the conclusion that as there is no plant for every soil, there likewise is no individual for every organization. What I often realize is that a misfit in values is the most frequent reason for a general lack of fit between an employee and an organizational culture. This is precisely why understanding and establishing the organizational identity, culture, and values is the key to ensuring that people can recognize a company as an environment in which they can thrive. Values are one of the key pillars of organizational culture. Q Management Team recognized it and initiated the process of describing and systematically adopting them. Values as the cornerstone Values are a company’s cornerstone, deep principles that direct decisions and actions in a company and do not change regardless of time, circumstances, or organizational objectives. They are a steering-wheel of decision-making and, if fully embraced and lived, can be perceived at all levels of a company’s functioning – in employee behavior, in relationships within teams, in establishing and driving processes, in goal setting, in strategy crafting, in relationships with clients, in leadership, and, eventually, even in how space is arranged. Values represent a compass in decision-making and they need to be visible in everyone and in everything. They reflect the soul of a company and, to be authentic, they need to reflect the values of its founders because those values are the ones that brought a company to the current point in time. This is why my primary task was to familiarize myself with the professional values and principles of the founders and the values of the entire management. So we started by recognizing their personal values as a key shaper and driver of the company’s development. After recognizing and bringing to the surface their personal values, we needed to harmonize around those values that were initially in discordance. The key to organizational values is that they must be common and this is why we were searching for this core through a workshop, for those essential shapers of a Q story so that they permeate every single Qumans’ action. We unraveled these values by considering Q from dierent angles and asking ourselves the following questions: What is attracting me to an organization like Q? What is it that makes the Q culture unique? What does Q do better or simply dierent from others? What would Q want to be better at than anyone else? How would you describe 5 key characteristics/attributes/features of Q? Our postulates and guides of our actions… The Q Person – what behaviors we appreciate The Q Enemy – what behaviors we dislike The next step in our value(able) journey is to reveal our core Q values! Just follow this path… Ivona Zgrabljic Ivona Zgrabljic is a founder of the HR consulting company “Educator Creator” and an author of “Educator ID”, a tool for the discovery and development of potentials. She is a Gallup-Certified Strengths Coach and has long-standing experience in conducting training and coaching for various companies. She describes herself as a spouse, parent, social entrepreneur, trainer & innovator. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 21, 2020 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 21, 2020 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Our Value(able) Journey, Part Two - Tech Consulting and Software Engineering URL: https://q.agency/blog/our-valueable-journey-part-two/ Discover Q’s three core values—Move Fast, Be Kind, and Do More—and how they shape the company’s culture, teams, and approach to work. Our Value(able) Journey, Part Two | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Our Value(able) Journey, Part Two Our Value(able) Journey, Part Two January 20, 2021 — 3 min read Many companies have value statements. Sure, having well-defined core company values can help you ensure each of your employees works towards the same common goal in a similar manner, and they all share a bigger purpose. But, here’s the catch: simply having these values written is not enough. They will come to life only when every single employee knows them by heart, lives by them every day, and leans on them as guidance in everything they do. It’s easy to write admirable values; it’s much harder to live them. In our previous blog , we described how the process of discovering and creating Q values ​​looked like. Now it’s time to reveal our three core values, the ones we care about the most. 1. Move Fast. Think fast and act fast. Be pragmatic, use Occam’s razor. We’re pragmatic, like to keep things simple, and say ‘no’ to over-engineering or overthinking. We encourage people to take actions and make decisions even if they turn out to be wrong. It’s better to do 80% today than 100% tomorrow, and a quicker way is usually a better way. 2. Be Kind. Never lose a good heart. Think big but stay humble. In Q, we keep our word and never break promises. We value others, always look for win-win scenarios, and put ourselves in the shoes of others. We are candid with each other (even when it hurts our interests), appreciative of other people’s views, and make time to help and support each other. 3. Do More. Always do more than people expect. Be passionate, take the initiative. Going the extra mile is what we always do in our work. We are not focused on the problem but on finding a solution instead (whatever the Q, we have an A, remember?). We take the initiative, deliver more than expected, and push our boundaries each day. We are integrating these values into everything we do, including how we recruit employees. The more these values portray you, resonate with you and describe people you’d like to be surrounded with, the more likely you will thrive at Q. Our core values support the company’s vision and shape its culture. I believe many of you heard Peter Drucker’s famous statement that “Culture eats strategy for breakfast.” Q’s fast growth has been supercharged by our culture: it helped us build great teams, attract clients that share the same values, and lead ambitious projects towards market success. So how would we describe our culture? It’s a unique social and psychological environment of Q where its people are easy, informal, and super casual. It’s central to get things done, but nothing at Q should ever get stied or formal. Talking to the CEO or an Intern, all Qumans should be their true selves, using the same lingo, attitude, or salty jokes. 🙂 We believe that our values and culture form a strong foundation for the company’s creativity, productivity, and profitability, as well as the long-term satisfaction of the employees. We are constantly on the lookout for new ways to nurture and promote them. That’s why our value(able) journey doesn’t end here. On the contrary, it has just begun! Anja Oppenheim Baresic Anja is HR Manager at Q agency. Also happens to be a psychologist. Passionate about everything human in Human Resources, especially people development and employee engagement. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 20, 2021 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 20, 2021 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Party of the year ❄ - Tech Consulting and Software Engineering URL: https://q.agency/blog/party-of-the-year-%e2%9d%84/ See how Q celebrated its annual Christmas party with great food, music, and an unforgettable night with the whole team. Party of the year ❄ | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Party of the year ❄ Party of the year ❄ January 25, 2019 — 1 min read December is full of festivities, but there is only one party we are all looking forward to — Q Christmas party! This is a beloved tradition we are anxiously waiting a whole year. This year’s Christmas Party was awesome — from great food to great music, it was in full swing till the wee hours. Take a look and see for yourself 🙂 Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 25, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 25, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Pharma Software Customization - Tech Consulting and Software Engineering URL: https://q.agency/blog/pharma-software-customization/ Pharma software customization has many benefits: the best features, enhanced security, no hidden costs, extendibility, connectivity and more. Pharma Software Customization | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Pharma Software Customization Pharma Software Customization March 31, 2025 — 5 min read Why is custom pharma software more sought after? The pharmaceuticals market is expected to grow at a CAGR of 4.71% between 2024 and 2029. Pharma companies who stay on top, follow this rapid growth by investing in innovation and managed digital transformation services . They are moving away from outdated software and paperwork to custom software solutions that are running in the cloud. Global pharmaceutical quality management software market size state and forecast, 2020-2030 (© Statista). What are the benefits of custom software solutions for the pharma industry? 1. It gets things done, the way you want it to. With custom pharma software, you will get things done. It will include only the features that you need , without any unnecessary ones. And it can be upgraded with new features, anytime. It will be designed and developed according to your needs and requirements. Our senior experts will help you decide the best course of action during the solution discovery phase. We are here not only as software designers and engineers, but as consultants also. 2. Security and data protection are built-in. Custom pharma software is the most secure solution, because custom code is the most difficult to hack or breach. Security is built-in right from the start and extra layers of protection can be added if needed. Well-known enterprise solutions are more prone to attacks, because of their wider adoption. Your software solution will be hosted on hand-picked cloud providers or on-premise locations where the environment can be optimised to ensure the safety of your data even more. We are certified in the following ISO standards: Quality – ISO 9001:2015 Security – ISO 27001:2022 Privacy – ISO 27701:2019 3. Best price There are no hidden costs when it comes to custom pharma software. You pay for what you get. In the beginning it may seem more costly than other software solutions (like corporate ERP systems, for example). But it’s not. Because there are no licenses per user, no recurring subscriptions or extra features that have to be purchased separately. The price is usually determined by the amount of development time , which is calculated from requirements (all the features and specifications). Custom pharma software is by far the best long-term solution to your company’s specific business needs. 4. Seamless Updates, Maintenance and Best After-Sales Support No other pharma software solution comes with the level of support as the one you get with a custom one. As a software agency that builds partnerships, we want to follow you along your business journey. Knowing your business goals makes it easy for us to provide the best possible support. The big advantage of having a custom solution is that you can see and try new features for yourself before going live. Which also means that things don’t cease functioning when updates arrive. 5. Extendibility and Connectivity Finally, you can extend your existing or new digital pharma solution and connect it to any external service. Let me show you a real-life example of this: Sandoz Stockout Monitor – Connecting Data in Pharma The Sandoz Stockout Monitor project’s purpose is to help pharmacists have the right information at the right time, to be able to support their patients. Q agency helped the development of the web application used by pharmacists to receive information about drug shortages and find alternatives for those that aren’t in stock. The software was created in three main phases: Discovery : A business analyst and a project manager participated and all business and project requirements were gathered. Based on that, the backlog was created. The focus was on software upgrade, both the back-end (PHP) and front-end (Angular). Design : The goals were simplicity and usability. After the launch, a web analytics expert tracked the user behaviour and suggested improvements. The resulting user interface focuses on the search function and filters as the most used UI elements. Development : Two full-time software engineers worked on the project. Developing the pharma web application was challenging due to the need to connect with numerous external services , leading to a substantial data load that required constant synchronisation. Ensuring real-time data accuracy and reliability , while managing diverse APIs, demanded meticulous planning and a robust architecture to maintain seamless performance. The Q team achieved the main project goal. Custom Pharma Sofware vs. Off-The-Shelf Solutions One question that gets asked frequently: Is custom software better than off-the-shelf or SaaS software? The answer is: Definitely yes. The following comparison table clearly shows this: Software type Custom Off-The-Shelf Features Per your request Missing or unnecessary Security & Privacy Very high Vulnerable Maintenance Ongoing May expire Extendibility Per your request Limited Scalability Very high Limited Interoperability High Limited Pharma Software Customization and Development Services If you want a custom pharma software solution or an upgrade to an existing one, contact us today . We offer the following service for the pharma industry: Pharma custom software application development Supply chain management digitalisation Pharma data engineering, analytics and reporting DevOps services for automation and infrastructure management We are looking forward to meet you and discuss your project: Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 31, 2025 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 31, 2025 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # PHP meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/php-meetup/ Q hosted a PHP Zagreb meetup featuring talks on Behat testing, legacy code, and the Strangler Pattern for modernising applications. PHP meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > PHP meetup PHP meetup February 20, 2020 — 2 min read PHP is probably the most popular scripting language, so we wanted to gather a group of PHP enthusiasts to share their knowledge and experience. In collaboration with the PHP Zagreb organization, we hosted a meetup. This time our experienced Anka and Ivan had a lot to share with the crowd. Topic Anka talked about was how to sell Behat tests to your boss or clients. She said: “Whenever I read or talk about writing tests it seems that the biggest problem is of a financial nature. How will I write unit tests, acceptance tests, functional tests, or any tests when the budget is small and the deadline is tight. Or why should we care when a client or boss doesn’t care? Behat tests seem to be the most easier to sell and I like to share that opinion with you.” Ivan talked about “Strangler pattern basics” He said: “When approaching legacy code, we are often faced with a complicated application that we feel would be best to rewrite completely. However, this task can be time-consuming and with a questionable outcome. Enter Strangler Pattern! Even though it is often combined with migration to microservices, I will also provide some more down-to-earth examples on how to use this pattern within your application.” Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 20, 2020 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 20, 2020 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # POC vs Prototype vs MVP: Which Reduces Risk Fastest? - Tech Consulting and Software Engineering URL: https://q.agency/blog/poc-vs-prototype-vs-mvp-which-reduces-risk-fastest/ POC vs Prototype vs MVP: compare each approach and learn which one reduces product risk fastest before full-scale development. POC vs Prototype vs MVP: Which Reduces Risk Fastest? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > POC vs Prototype vs MVP: Which Reduces Risk Fastest? POC vs Prototype vs MVP: Which Reduces Risk Fastest? June 19, 2026 — 5 min read Wondering about the strategic and operational differences between starting your IT project with a POC, Prototype, or MVP?  Want to understand proof of concept vs prototype, POC vs prototype vs MVP? Let us tell you a story . The story begins with a guy named David, the CEO at a financial company. David recognises AI’s potential, but at the same time faces the loudest quiet fear: Will the industry move faster than him? When his VP of Product walks in with an idea for a custom financial calculator, David’s experience suggests that it’s a great idea. However, he is very aware of Eric Ries’s famous warning: “There is surely nothing quite so useless as doing with great efficiency what should not be done at all.”,so he knows that they need an immediate idea test. The VP of product is throwing around terms like POC and Prototype , and David just heard about a competitor’s great success with an MVP . He understands the terminology, and he knows that modern development tools enable teams to build these assets faster than ever before. Yet, he lacks 100% certainty on the strategic differences, confronting a dilemma familiar to every technology decision-maker: What do I actually need, how much will it cost, and what is the best fit for my situation? To make the right decision, David must first look at the most common reasons why tech projects fail. These reasons include not assessing and underestimating Value , Feasibility and Usability risks . 42% of tech initiatives die because they misunderstood market demand. This means they didn’t assess the Value risk and they built a product for which there was no interest (Source: CB Insights) 45% of software projects go out of the budgets. We can assume that they underestimated the Feasibility Risk, in other words – engineering complexity. (Source: McKinsey ) 25% of projects fail because of the bad UX and adoption friction. These were the situations where users didn’t understand the solution, even though the tech worked – Usability Risk . (Source: The Standish Group ) So, to avoid these roads, David gets to choose some of the three doors in front of him: Door 1: Proof of Concept (PoC) Will it work? Preparing a Proof of Concept means developing and testing isolated core functionality and prioritizing technical reality (feasibility questions) over user experience and overall impression. the Scope: Restricted, focused entirely on a hypothesis that needs to be validated. the Goal: Validating the core concept and uncovering potential algorithm, architecture, integration blockers. the PoC on the Calculator Example: A raw, interface-free script to test if the AI math engine can successfully parse complex tax data from a client’s legacy system and process the calculator’s core algorithm in under two seconds. Eliminates critical Feasibility Risk before wasting months of development on flawed technical assumptions. Door 2: Prototype How will it function, look and feel? A Prototype includes broader scope to simulate the main workflows and visual representation of the product, before writing final production code. the Scope: Built around the “happy path” of the user journey – the core features that bring the highest value to both users and company and will be used most frequently. the Goal: A clickable part of the solution loaded with dummy data, perfect for securing stakeholder buy-in and capturing early feedback, alignment or building confidence. the Calculator Prototype Example: A quick, working web page using a basic frontend framework. Users can type in their numbers, adjust the slider bars, and watch the calculator compute results on the screen in real-time. It doesn’t save their user profiles or link to a payment gateway, but it lets clients experience a Happy path . Eliminates crucial Usability Risk (and elements of feasibility risk ) by testing solution feel and system capabilities through rapid, cheap iterations. Door 3: Minimum Viable Product (MVP) Will they use it and pay for it? A fully functional, bare-bones version of the product built using real code, live database architecture, and deployed to a select group of users. the Scope: Sacrifices the non-essential “nice-to-haves” to deliver the leanest functional application. the Goal: While a prototype checks how a problem should be solved visually, the MVP proves whether the problem is real and if the market values the solution. the Calculator MVP Example: A simplified, coded web application. It connects to live market data streams and allows selected beta clients to input their real corporate financials. David can now track if these companies use the calculator regularly and whether they would be willing to pay a monthly subscription for it. Even though it demands the highest upfront investment, MVP brings the greatest clarity by simultaneously defusing Value, Usability, and Feasibility risks . The shortest Decision Matrix High technical or legal uncertainty? Asking yourself if it will work?  → Build a POC . (Timeline: 2–3 weeks) Tech is straightforward, but the user workflow is complex? Asking yourself how it will function, look, and feel? → Build a Prototype . (Timeline: 2–4 weeks) UX is validated, and you need to prove real market demand? Asking yourself will they use it and pay for it? → Build the MVP . (Timeline: 2–3 months) Back to David. David sits in his office, looking at a spreadsheet of his budget. He knows that going straight to an MVP could cost him thousands of euros and months of development if his assumptions are wrong. At the same time, being stuck with minor experiments might mean losing the momentum completely. The clock is ticking, the board is waiting. The ultimate truth for David – and for your own project – is that the answer to “which one reduces risk fastest?” depends on which specific risk is your biggest threat. Is your biggest risk from the feasibility, usability or the value domain? David reaches for the handle of the door, ready to stake his reputation on the answer. What do you think? Which door is the best choice for David? Which door are you opening at Monday’s executive meeting? Need help before opening the door? Reach out to our team! Vesna Palada Imagine three circles: Clients, Sales, and Engineering. Vesna is a Presales Engineer sitting at their intersection — bridging communication gaps by 'speaking all three languages' and crafting solutions that connect ideas with possibilities. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 19, 2026 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 19, 2026 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Saving Your Career in the AI Era: Presales Engineer's POV - Tech Consulting and Software Engineering URL: https://q.agency/blog/presales-engineeer-pov-saving-your-career-in-the-ai-era/ Navigate the AI era with insights from a Presales Engineer. Discover how to future-proof your career and thrive in a tech-driven world. Saving Your Career in the AI Era: Presales Engineer's POV | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Saving Your Career in the AI Era: Presales Engineer’s POV Saving Your Career in the AI Era: Presales Engineer’s POV January 20, 2025 — 4 min read We’re Replaceable — But So Was the Water Carrier Over the last two years, more than 416,000 people have lost jobs in IT (according to the announced layoff tracker layoffs.fyi ), with thousands more unannounced including developers, designers , QA specialists, presales engineer roles, and others worldwide. Recent experience has made one thing painfully clear: we are very replaceable . To add fuel to the fire, at the end of 2022, ChatGPT was made publicly available. So, half-smiling and half-threatened, the common topic of coffee breaks, meetups, and conferences became: “Will AI replace us?” Spoiler alert: Yes, AI will replace us. Well, sort of. If we take a step back in history, new technology has always replaced human labor. Imagine the furious water carriers of ancient Rome when they saw aqueducts rendering their job obsolete. Or picture the retirement-ready hand copyists in the late Middle Ages, replaced by the printing press. I’m sure those medieval scribes were once highly respected, maybe even essential members of society… until they were no longer needed. Fast Forward: The AI Takeover is Here Now, fast forward to today, the question isn’t whether AI will replace us—it’s how, where, and in which areas. Let’s take sales and presales . AI has already started drafting technical proposals, answering common questions , and recommending solutions based on customer data. According to PWC’s 2024 CX Trend Report , one of the most promising use cases for AI this year lies in digital twins for sales and presales activities. These twins are transforming how businesses operate by enabling: enhanced visualization, more personalization, scenario simulation, or data-driven insights. At Q, Presales AI Assistant Works Overtime As we move from these broader trends to how we work day-to-day, at Q agency, AI has become an essential part of every of our presales engineer daily operations . We’re currently developing and utilizing an in-house AI tool that streamlines our processes—helping us prepare backlog based on the RFP, meeting notes, or any other useful document, generate accurate effort and price estimates, and finally create tailored pitch presentations. The idea behind this approach is to significantly reduce the time required for presales preparation and keep the presales only as the knowledgeable supervisor during the estimation process. When you add the rise of virtual selling , the growing preference for automated processes , and the shift toward self-service buying experiences , it’s clear: business interactions—and the data they generate—are becoming more centralized and aggregated. This creates the perfect playground for AI to take over. What Would I Tell the Ancient Tech Workers..or to myself? Now, reflecting on this shift, I wonder: what would I say to that poor Roman water carrier or the highly educated hand copyist? If they weren’t slaves (for the Roman guy it’s unlikely, but we can hope), I might offer some words of encouragement: Meliora (“always strive for better”)…or the classic, Labor omnia vincit (“work conquers all”). The new technology pushing us off our comfortable, warm sofa is terrifying. But it’s beyond our individual circle of influence. Instead, let’s focus on what we can control: staying informed, nurturing our interests, and striving to be just a little bit better every day . Starting small, starting today.. I can put this into practice by dedicating some of my time to reading about relevant business trends or other topics I’m interested in. Here’s how I can make a lot of my reading time by “starting small”: 1) After reading, I can write down one, the most compelling idea or insight I came across. (not something I knew from the past) 2) List down one or two additional notes or examples related to that insight. Maybe some interesting data that can be used for other purposes. As a presales engineer, during my learning time, I could explore: Emotional intelligence in sales: how AI tools help sales teams tailor their pitches in real-time during virtual meetings, based on emotional cues and body language. Data literacy & predictive analytics : deepen knowledge of these topics to understand how to leverage data effectively in presales decision-making, use AI to anticipate client needs, and adjust the sales approach accordingly. Impact of human-AI collaboration on decision-making in the presales process. Over time, I’ll gather a treasure trove of knowledge. When I sit down to reflect on everything collected, who knows? Maybe a wild, groundbreaking idea will strike. And if not, maybe my AI assistant will find something brilliant in my pile of notes. Adapt, Learn, and Pretend You’ve Always Been Ready While AI continues to reshape industries, embracing constant learning, adaptability, and small daily improvements helps us stay relevant and succeed through the changes. Meliora! 🙂 Vesna Palada Imagine three circles: Clients, Sales, and Engineering. Vesna is a Presales Engineer sitting at their intersection — bridging communication gaps by 'speaking all three languages' and crafting solutions that connect ideas with possibilities. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 20, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 20, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Project pricing: bugs and fixes - Tech Consulting and Software Engineering URL: https://q.agency/blog/project-pricing-bugs-and-fixes/ Explore common software project pricing models, the risks of inaccurate estimates, and how hybrid pricing can reduce uncertainty for clients and development teams. Project pricing: bugs and fixes | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Project pricing: bugs and fixes Project pricing: bugs and fixes January 17, 2019 — 3 min read Pricing in general If you work in a project-based line of business, this issue is something you must have encountered multiple times. Project pricing is obviously a huge topic, so we’ll cover just a fraction of it. In general, there are multiple approaches on how to price a project, while some of the industry leading ones in the world of software development would include value-based pricing, cost-plus pricing, competitive pricing and billing around agile cycles. Whatever your pricing strategy may be, there is always a possibility that your competition won’t follow a truthful path toward forming their price. There is nothing wrong with a competitor being cheaper, faster or more skilled, but dishonest pricing and hiding the full potential scope of the project, along with the possible hurdles from your customers is definitively a problem one can easily find in the industry. What we all deal with One recent situation we’ve lived through a few months ago illustrates this point perfectly. A company we met up with had a need to develop an ERP system to manage their employees and equipment. Prior to meeting us, they already gave the project to a group of developers, who came to them with an estimate of 32 man-days that will be needed to develop everything. The project was signed at that moment and so began the investigation phase. It took the dev team 2 full months into to project to realize they were wrong and needed to do a re-estimate. The new figure they communicated was 650 days! After being burnt like this, the client still found our 62 days estimate to be too high and the deal didn’t go through. The point of this article isn’t to bash on any competitors nor the clients for wanting to believe in shiny figures, its purpose is rather to warn both parties of the dangers of not approaching project estimation more meticulously. Some do it for the lack of knowledge, whereas some count on the fact that the client won’t mind the additional costs that come up in the later stages of development. A Small Q Tip Not to end things on a negative note, we’re happy to share one strategy we started using recently, which helped us increase our success rate in winning new projects. When we are drafting quotes for really large projects, most often we’ll go with a hybrid quote, combining a fixed-price estimate with a dedicated team arrangement. This means that we will attach a final amount of man-days to the first few project phases, like database & project architecture, UX & UI design and parts of the Frontend and Backend development. After this stage is completed, a team of dedicated experts will take the project to its completion. The issue this approach solves is that we don’t have to charge the client any “buer” (the price for the time that will be spent to cover possible unexpected problems that may occur) and the risk factor is eliminated for both sides. We will provide the client with a rough estimate, e.g. a team of 2 Frontend devs and 1 Backend dev will take 2–4 months to complete the project. This way, everyone is incentivized to deliver the project sooner and productivity was shown to rise by considerable amounts. Adrian Keindl Adrian is mag.oec. who combines his economical profession with his love of tech and the processes involved in building high-end digital solutions. He is a multi-lingual expert and the one who always has a compliment in his sleeve, accompanied by a business offer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 17, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 17, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Pros and Cons of AI in Healthcare - Tech Consulting and Software Engineering URL: https://q.agency/blog/pros-and-cons-of-ai-in-healthcare/ Let’s dive into this topic and see the pros and cons of AI in healthcare, an industry of huge importance for people’s health and wellbeing. Pros and Cons of AI in Healthcare | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Pros and Cons of AI in Healthcare Pros and Cons of AI in Healthcare March 21, 2025 — 8 min read The main buzzword in the last few years is, we all know it, AI. Artificial intelligence has basically found its way into any industry we can imagine, and one of them is, naturally, the healthcare industry. One of the most important ones for us as it’s our health in question, after all. So what are the pros and cons of AI in healthcare, and in which way can it help? In which cases may it not be so beneficial? Just some of the benefits of AI are better and more precise diagnosis of diseases, personalisation of therapy and optimisation of work processes. But with artificial intelligence comes the ‘dehumanisation’ of the treatment process, high costs, the issue of patient data privacy, among others. Let’s dive into this interesting topic together and see the pros and cons of AI in healthcare, an industry that’s considered a top priority for people’s health and wellbeing. Pros of AI in Healthcare A revolutionary and often jaw-dropping technology that has numerous advantages, including those in the healthcare industry. Let’s see what are the pros of AI in this sector. Faster & More Precise Diagnostics The results achieved by AI in the field of diagnostics are nothing short of astonishing. In the context of development that develops with the aim of medical imaging, we often encounter terms such as MRI, CT, X-ray, and so on. Precisely these medical imaging procedures with the help of AI can more easily recognise various abnormalities that occur on tissues. How do they do it? For the development of a satisfactory degree of precision of AI-powered diagnostics, a strong dataset preparation and a quality database architecture are required. With the help of machine learning and deep learning models, it is possible to detect a tumour much earlier. And this greatly increases the chances for more successful treatment with a better outcome. Personalised Access to Treatments Have you heard of precision medicine ? It is one of the new trends in healthcare, where there is a shift from a generic therapeutic approach to precision medicine. The key to precision medicine is the following. Information is collected about an individual’s medical history, family medical history, their lifestyle and habits, genetic predispositions — and all this is compared with a huge amount of previous cases. This way, we get better insights for the patient and a personalised treatment plan is obtained. From a developer’s perspective, a stable data pipeline and integration with existing systems are of vital importance. New Medications: Faster Discovery & Testing It is a harsh reality we live in that investing in and developing new helpful drugs is an extremely expensive and long-term process. But with the help of artificial intelligence, more precisely by applying AI-powered analytical tools, testing can be much faster. And that means faster discovery of new meds with the help of analysing a large number of datasets and the integration of high-performance computing solutions. The end result? AI helps shorten the time and cut down on financial requirements needed for clinical studies in the discovery of new life-saving drugs. Work Process Optimisation AI helps us all optimise work processes and workflows, including those in the healthcare sector. We also know how burdened doctors are with administration related to patients. That’s where AI steps into the game. As a software developer working in the AI field, this includes working on micro-service architecture, API integrations as well as security protocols . Repetitive tasks can be optimised with the help of intelligent automation processes, and healthcare workers can spend much less time on paperwork and dedicate themselves more to what matters the most. The patients. More Reliable Accessibility to Healthcare Since we live in an AI-driven digital age, with all that came also medical virtual assistants and chatbots as a new trend and new approach in medicine to treating people. These are just examples of how modern medicine too, has gotten quite digitalised. And although it cannot replace a doctor or nurse entirely (and that is that the end goal at all), it can be very useful in situations where medical staff is not able to be with the patient face to face. For example, there are many elderly and ill people who live in remote and rural areas. And to whom this type of medical help means more than a lot. When it comes to developing such AI-powered solutions, it’s essential to create simple user interfaces . We’ve already mentioned the elderly who do need a simple and straightforward user experience. What’s also needed is the compatibility with various operating systems, and most importantly — complete and secure protection of personal data. Cons of AI in Healthcare Nothing is black and white, so there are both pros and cons of AI in healthcare . Let’s see where AI has areas for improvement. Concerns About Privacy & Data Security When we talk about the pros and cons of AI in healthcare, we cannot fail to mention data privacy. People are rightfully worried when this topic is mentioned, because data breaches often happen in other sectors, e.g. in banks. An individual’s health data is, after all, the most intimate and private thing that a person has. That is why it is very important to comply with the US-based Health Insurance Portability and Accountability Act , HIPAA , or the EU-based GDPR regulation, which covers a wider area than the health sector in relation to HIPAA. However, the fact remains that incidents such as data leaks can permanently damage trust, as well as lead to various legal and financial consequences. Loss of Human Touch We mentioned how digital solutions like medical virtual assistants and chatbots can help people in many ways. But let’s face it, we all often get irritated by the way many chatbots we use on a day-to-day basis ‘talk’ to us. That is why, when developing AI-powered solutions, it’s very important to ensure a user journey of top-quality . Why? After all, it is our health, that we are all most sensitive about. So, there is a justified suspiciousness of people regarding this type of treatment when there’s no personal, human contact by a medical professional. And this represents one of the biggest challenges in treatment supported by artificial intelligence. Do we want to talk to an automated bot after receiving a difficult diagnosis, or is live contact with a physician more important? You be the judge. AI Models’ Bias Probability AI algorithms are not just sets of instructions and rules that have come about by themselves. They simply learn from existing datasets. As a disadvantage of AI in this regard, there are risks where algorithms do not have sufficiently representative samples , and therefore can lead to wrong diagnoses and treatment recommendations. Something similar to when ChatGPT hallucinates, but this is where we’re talking about human lives. Something much more serious. High Implementation Costs High-performance servers. GPU clusters. Various framework licences. All these expensive necessities when it comes to AI-powered medical solutions can be a disadvantage of AI in healthcare. Not all healthcare systems have the resources to finances such investments, and eventually can lag behind other larger systems that did have enough financial resources to invest into AI. Also, a continuous education of employees in this field is more than needed in this fast-evolving industry. Legal & Ethical Constraints This tricky area has not yet been explored, given that AI is still at its early stage. However, when it comes to regulating liability in the event of, for example, an incorrect diagnosis, who is to blame? A human? An AI-powered software solution? Here, regulation is still trying to define responsibilities. Also, from a developer perspective, we are often exposed to the creation of software for which, as we have already mentioned, there are no clearly defined legal regulations. Conclusion To sum it up, we can say that we’re only at the beginning of discovering the possibilities of AI in every aspect imaginable. When it comes to advantages and disadvantages of AI in healthcare specifically, we see that each coin has two sides. However, it is clear that, despite all the challenges and questions AI brings along, it is still a greatly unexplored area that’ll bring us many more discoveries and make our lives easier in practically every domain of our lives. Healthcare is one of the most important industries for the human species and we will certainly see many investments in it to see how artificial intelligence can further help in treating and preserving health. From faster illness diagnoses, personalised therapy and treatments to overall optimisation of the entire process, AI is here to facilitate and improve medical treatment from every angle. As a software development company with experience and skilled teams in the AI field , we are here to help you build AI-powered software that can be revolutionary in various industries, including healthcare. Feel free to reach out and set up a meeting with us by clicking the button below! ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 21, 2025 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 21, 2025 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q agency at The Testival Conference - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-agency-at-testival-conference/ This year's Testival conference was held in Osijek. This blog will give you more insights into the conference. Q agency at The Testival Conference | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q agency at The Testival Conference Q agency at The Testival Conference October 19, 2022 — 6 min read The main goal of the Testival conference is to gather QA experts and discuss various topics of our own choosing. The conference is divided into two sections over two days. On the first day, everyone gathers up and suggests different topics, and on the second day a schedule is created and attendees choose to participate in discussions they find interesting. First day of the Testival conference The first day began around 19:00 and over 130 participants gathered in the main hall. We were welcomed with snacks and drinks and very soon the introduction of our host started. In the introduction, the agenda was presented with the announcement of two keynote speakers and short sessions of lightning talks in between sessions. After a short intro from organizers and sponsors, we all started discussing what topics would be interesting for discussion. As soon as someone had an idea about the topic, he or she would write it on a sticky note and place that note on the big whiteboard. After 50 minutes of discussion, the whiteboard was full of suggestions and now the second part began. Each participant went to the whiteboard and put a vote on a sticky note with a topic of his interest. After everyone voted for their favorites, votes were counted and we had our list of topics for the next day. We concluded our first day by making new connections among participants and playing some board games that were provided in the main hall. Qumans at the Testival conference Testival Conference topics overview Second day of the Testival conference The second day of the conference is the main part where we attend the presentations or discussions that were voted on the day before. There are 20 topics divided into 5 stages/rooms for us to choose from, so each person could attend 4 topics of his own choosing. Although most of us from Q shared a similar interest in presentations, we decided to split into groups so we can cover more topics and discuss them later among us and share some new knowledge. The morning session started and we all went our separate ways to listen, participate and learn until we all gathered together at lunchtime. The concept of the conference is very interesting and it differs from topic to topic. Some presenters choose to have presentations and have more theoretical discussions, and some presenters just gather all participants in a circle and start an informal discussion about the topic. After the morning sessions were done, we had a lunch break where we all gathered and discussed the topics we listened to. This was also a good opportunity to meet new people , catch up with old colleagues, and discuss ideas and ways of working with people from different companies. After the break, we continued with the conference where we again went our ways and had the opportunity to listen to many interesting topics. Testival Conference lunch break Interesting topics from Qumans perspective Penetration testing: “This topic was in the form of a presentation. The whole presentation was mostly theoretical where we could learn a lot about different approaches to penetration testing . The presenter had many examples from the real world where companies were hacked and he used those examples to explain to us how to prevent those kinds of attacks. He also presented a list of tools that are used for penetration testing. This workshop was really interesting, but the only thing that could make it better would be some practical examples.” How to test a tester: “This discussion was about testing the knowledge of testers . How to separate tests by seniority, prepare test data and environment, test documentation writing and test the mindset of a candidate. It was also discussed which types of testing should those tests contain, how to test cultural fit, and how it is important to look for good junior candidates at universities, and give them opportunities based on character not only on technical knowledge. It was a very open discussion with many interesting points of view which benefited us all.” How to train a non-QA person: “This presentation was really informal where we all sat in a circle and discussed this topic. It was very interesting to hear how QA team leads conduct interviews with persons that don’t have any previous experience in the QA field . There was a discussion about how to approach those interviews, which questions to ask, and how to recognize the potential in that person. The next point was how to begin training a person without any experience and it was clear that the presenter is experienced in those situations because she provided many interesting examples and proposals.” Performance testing: “In this presentation, we discussed the importance of performance testing, especially for web testing. Performance testing is for sites and applications that have a large number of users so we can see how much data the system can “take” before it breaks. Here we measure how long it takes to load the elements, how much load it can take, and at which point there is an impact on performance. This type of testing is also very expensive because we need a performance environment and it would be best to test it overnight when there is no user activity, and for that budget needs to be ensured. This led us to the last point of discussion where we talked about how to teach sales to sell such things, and how to convince clients to pay for such things. It was a very interesting topic where we covered both technical aspects of performance testing(how to test, when to test, why to test) and business aspects (budgeting, risks, and impacts on business if we don’t include performance testing).” Conclusion Testival conference is unique in their own way. I personally never attended a conference where participants are the ones who make the agenda on-site, but from my point of view, that is something that makes this conference so special. We all went there to listen and learn, but at the same time, we became “organizators” of the conference. This was a valuable experience for all of us, and after listening to our internal feedback I have no doubt that we will be there again next year. 🙂 Mirko Krolo Mirko is a QA engineer in Q, with experience in web and mobile testing, both manual and automation approach. His main focus is that every application goes to production without any bugs and that every testing process is thoroughly documented. He loves to spend his free time with his dog in the mountains and also enjoys a good beer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 19, 2022 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 19, 2022 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q agency Named as The Top Web Development Company in Croatia by Clutch - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-agency-named-as-the-top-web-development-company-in-croatia-by-clutch/ Q agency is named Croatia’s top web development company by Clutch, recognising its expertise in web, mobile and custom software development. Q agency Named as The Top Web Development Company in Croatia by Clutch | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q agency Named as The Top Web Development Company in Croatia by Clutch Q agency Named as The Top Web Development Company in Croatia by Clutch October 25, 2021 — 4 min read We have been one of the fastest-growing development and design agencies in Europe! Our team provides extensive expertise in mobile development solutions, programming and scripting, and CMS. We provide specialized custom software solutions that help our clients upgrade their processes and improve their products and services. Our services involve: Web development Mobile application development UI & UX design AR/VR development Custom software development Getting a Clutch Award! Established back in 2013, we are a Zagreb-based design and development agency that helps businesses scale their markets . Our company is known as one of the nation’s fastest-growing service providers, working with dierent enterprises and organizations all over the world. The team’s eorts in putting together the best solutions and services in the industry have led us to an amazing achievement: a prestigious Clutch award! That’s right; our team has been recently named as one of the most promising web development companies in all of Croatia! We are very honored to be part of Clutch’s list! Being a strong contender as the #1 in Croatia for web development is undoubtedly one of our biggest achievements this year. Furthermore, we would like to thank Clutch for recognizing our eorts and hard work! To our clients and partners, this award is for you! Thank you for believing in our team and for supporting our business through and through. But What is Clutch? For those who may not know Clutch, they are a leading global B2B reviews platform. They carefully curate lists of the absolute best agencies and organizations by industry and location, simultaneously enabling companies to establish credibility and buyers to find the right services. If you’re looking for an award-winning team to handle your web development eorts, Clutch is the right place to look. You can contact us today and tell us more about your project. Teamed up with Top Design Firms! As we aim to expand our client base and influence, we’re excited to announce that we’ve recently teamed up with the newest B2B website to help further our growth. Top Design Firms (TDF) is brought to you by the creators of Clutch and is making its debut on the internet. The site is specially designed to help millions of browsers through blog-style content, agency rankings, and survey reports. According to TDF’s list , we are among the top 100 visual reality companies for 2021! After their team evaluated countless firms for the category, our team’s unmatched solutions and projects shined through. We are genuinely stoked to be one of the best-performing companies on TDF and we can’t wait to see how far we can go next year. Wondering what it takes to rank on the platform? Their team takes into account several dynamic variables including client reviews, case studies, market position, and past recognitions. With 23 amazing client reviews on our Clutch profile, we’re undoubtedly a force to be reckoned with. Take a look at what our clients’ say about us: Q agency managed to pull o a very complex project in a short time span, but it was their add-ons that were really impressive. There were functions that I originally didn’t want to suggest because I was concerned about our turnaround time. But, they went ahead and scoped out the ideas on their own and assured us that they could fit them into the schedule. These add-ons ended up making the solution more advanced. Creative Director, 265 Media, Their energy and experience are impressive. A lot of people have a ‘flashy brand’; they have uniqueness and coolness to them, which is easy to do from a branding standpoint, but then they underdeliver. Q agency has that whole package; they have the image upfront, but it goes through all the way to work with their people and their teams, which I think is very diicult to do. They’re very polished and edgy, which you need to have on this kind of project. CEO, BYOD, We are more than happy to be enlisted on these platforms as leaders. Marta Juricic She is a marketing and PR enthusiast responsible for developing, implementing, and executing strategic marketing plans. Classy girl with a bit of hood in her, and an attitude which she loses when there’s a dog nearby. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 25, 2021 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 25, 2021 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q & Algebra: Strengthening the Bond - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-algebra-strengthening-the-bond/ Algebra and Indiana University students visited Q Agency in Zagreb to learn about our business, marketing, employer branding, and company culture. Q & Algebra: Strengthening the Bond | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q & Algebra: Strengthening the Bond Q & Algebra: Strengthening the Bond March 31, 2022 — 3 min read Putting our values into practice When you scroll through the Q agency’s web page, you will inevitably stumble upon our core values, which we try to live by in our everyday interactions. One of the values, Be Kind , motivates us to support each other – in terms of professional development, this support often extends to exchanging know-how with other people. Once again, we decided to welcome a group of students from the Algebra University College and present them with our work model. They were also accompanied by a group of students from Indiana University’s Kelley School of Business . For the American students, this was their first study tour in Croatia, and Algebra was their host. The visit to Q was organized as a part of their course titled “ The Business of Croatia .” Learning about Q: the business perspective Following the initial photoshoot, students and their professors made a short tour around our HQ oice in Zagreb. Next, they had the opportunity to learn about Q’s Company profile thanks to a presentation led by Peter , our Key Account Manager . He first illustrated the meaning behind our slogan, “Whatever the Q, we got the A.” Then he talked about recognitions that airm the quality of Q’s business, including the Clutch awards and the Deloitte Award for the fastest growing agency in Europe. The main part of the presentation was analyzing Q’s business perspective: our services, collaboration models, and clients we work with. Apart from naming some of our most renowned clients, like The Times , BBC , and Facebook , Peter also described the projects we have done for these clients. As an agency, Q works with companies from dierent industries, ranging from the travel industry to fintech – Peter highlighted some similarities and dierences between their business requests, which proved to be quite insightful for our visitors. After finishing the presentation, Peter had the opportunity to provide the As to students’ Qs , allowing them to further expand their knowledge about the scope of our work. Naturally, American students were particularly interested in Q’s strategy to position itself in the USA market . Who knows, maybe thanks to the interest sparked by this visit, it will be them who could soon help Q in this mission. Marketing and Employer Branding – this is how we do it Knowing the importance of social media among our Gen Z visitors , we chose to present Employer Branding activities at Q as the last activity of the day’s agenda. Our Marketing Associate, Marta, gave the overview. After highlighting the goals behind our Employer Branding strategy , Marta talked about the importance of nurturing Personal Growth and Career Path , Community , Peer Relationships , Transparency , Employee Engagement , and Qulture . Some of these initiatives are also presented on our YouTube channel , so make sure to check them out. Come back soon! Even though the visit lasted for only one afternoon, the attendees expressed their delight over everything they’ve heard by giving out a big round of applause for Peter and Marta. This type of feedback undoubtedly demonstrates the importance of sharing knowledge with younger generations and motivates us to continue this type of collaboration. We hope to have more of such opportunities soon, for which our doors are always open! Lucija Knezevic Lucija is a Talent Acquisition Assistant at Q agency and a future psychologist. Her main goal is to become a recruitment expert – luckily, she has great colleagues to learn from. She likes to spend her free time outdoors, smiling at the doggos she meets along the way. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 31, 2022 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 31, 2022 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q Became a Verified Member of the Pangea Community! - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-became-a-verified-member-of-the-pangea-community/ Q agency joins the top 7% of global software engineering vendors as a verified Pangea Community member, highlighting its expertise and strong client satisfaction. Q Became a Verified Member of the Pangea Community! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q Became a Verified Member of the Pangea Community! Q Became a Verified Member of the Pangea Community! January 26, 2021 — 4 min read So happy and proud to announce that Q is now part of the top 7% of global software engineering vendors at Pangea! We’re looking forward to new opportunities and simplifying the process of finding world-class talent and healthy vendors. Our journey with Pangea In today’s globalized, competitive environment, it’s important to adapt to change and execute a long-term strategy. Q has a cadre of top-shelf professionals, and with Pangea , we can bring in even more challenging and successful projects and collaborations. Having a Pangea profile is an opportunity to be side-by-side with the best companies in this industry and gain recognition among customers. We believe new clients will recognize our unique and strong Q culture, which will help us stand out in the crowd. Pangea has developed and facilitated the verification process through extensive guidelines, reviews, and excellent and responsive support, so it was not challenging to complete all the necessary steps. They made sure we were always on the right track! We dedicated one person who led the project, set deadlines, Gantts, tasks, shared responsibility between people, and ensured that everything was done on time. The verification process just reminded us why we work so well as a team. Happy to announce that Q is now on the Pangea list! What we learned Throughout the verification process, we overviewed everything we achieved and got useful insights into what we can improve and work on in the future. Sometimes, it is good to take a step back and look at the broader picture. That’s what made this journey valuable to us. We value true partnership and straightforward communication with both clients and members of our team. The result of a 9.3 client score proved to us we’ve chosen the right track in our work. People always come first, and you can never fail with an honest approach. Through this process, we learned we need to work as one to achieve great things. The news about being verified by Pangea made us all closer and proud, especially when we saw the outstanding scores. Every step of the Pangea process reminded us of the importance of teamwork, and that’s why we LOVED it! Filip, CEO Even though it is still quite over the industry’s average, our lowest score was Project management score with 8.9. It is crucial to continue improving and growing, and we can always be better than yesterday. Increasing this score will be our focus in the future. Our excellent customer service, large market presence, leadership in product innovation, and personal relationships with customers led Q to the place we are today. However, we believe that expanding knowledge and improving weak spots are never-ending processes necessary on an ongoing basis for a successful business. Dalibor, COO Strategy workshops with clients at Q. We include our clients in every detail from idea to final product. New Chapter Being on Pangea’s top 7% vendor list is an acknowledgment to our people who worked hard to bring Q where it is today. And today, Q is home to experts in dierent fields, people who love their jobs, and teams that want to grow and learn. We want to create an interesting and challenging environment for Qumans, and the best way to do so is by bringing quality and challenging projects. We continue to attract, retain, and motivate the right people for our current and future business needs. Being present on Pangea will help us build a motivational, challenging, prospering, and ambitious workplace by creating new business and collaboration opportunities. We hope that our scores and results will keep the positive trend, and Pangea – we are ready for you! Vedran Tolic Vedran is the Founder and CBO at Q agency, currently leading our London office. He is experienced in business and product development and connects the two worlds while helping clients grow their digital products. Besides, he is the best burger maker in the world, trust us. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 26, 2021 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 26, 2021 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q becomes Six. Greater than Five. (April Fools’ Prank) - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-becomes-six-greater-than-five-april-fools-prank/ Discover Six’s rebrand, new visual identity, and the story behind the company’s growth from Q into a global digital solutions provider. Q becomes Six. Greater than Five. (April Fools’ Prank) | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q becomes Six. Greater than Five. (April Fools’ Prank) Q becomes Six. Greater than Five. (April Fools’ Prank) April 1, 2019 — 3 min read Let’s come right out and say it: We are taking our company into the next phase of growth by rebranding our name and logo. As of today, we are Six. Greater than Five. Over the past six years, Q has changed significantly, so we were keen to engage all employees and customers — new and existing — to identify what our personality is and the traits that define it. Why Six? Number 6 is the symbol of luck and the highest number of the dice. We are 6 years old, have 6 global oices, operate on 6 continents and our founding team consisted of 6 people. Also, the Pythagoreans acknowledged the number 6 to be the first perfect number. In mathematics a perfect number is when all the numbers divisors (excluding the number itself) are added, the sum equals the number itself (1+2+3=6). New Visual Identity One of the most exciting parts of a rebrand is the visual identity which is now unmistakably clear. Our new identity truly reflects our promise and expertise and is very recognizable among the target population. The color red is a highly visible color that is able to focus attention quickly and get people to make quick decisions, which is one of the reasons fire trucks and fire engines are usually painted red. Red represents physical energy, lust, passion, and desire. It also symbolizes action , confidence , and courage . Rocket with two strong engines is the main element of the new visual identity. It represents a strong and bold team willing to take new challenges and challenge the boundaries of digital. New visual identity — name and slogan The author of the new visual identity is Goran Trtinjak , our Senior UX Designer with a strong background in digital projects worldwide. Many thanks also go to the Fabular team, led by Anja Bauer, author of the initial Q branding and slogan “ Whatever the Q, we got the A” . For the second time in just two years, they came up with the amazing brand story we are sure will be recognizable globally. In 2018, Q was named as one of the best global brands according to REBRAND 100® Global Awards . We are sure Six will achieve the same! Six is a digital solutions provider operating through six global oices — in Zurich, Belfast, Oslo, Los Angeles, New York City, and its Zagreb HQ. Using a fresh approach and senior talent, we create exceptional, cutting-edge digital solutions for clients in 20 countries worldwide, from Alaska to Dubai. Our unique methodology integrates creativity, strategy, and technology in every project, while the expertise and experience of our people can provide answers to even the toughest questions. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 1, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 1, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q clients in the UK - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-clients-in-the-uk/ Explore Q’s work with UK brands including The Times, BBC, showcasing digital products, software development, UX/UI design, and branding. Q clients in the UK | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q clients in the UK Q clients in the UK April 19, 2019 — 6 min read For the last 5 years, Q has been working in 20 countries worldwide and the UK has been one of our best markets. We’ve successfully launched dozens of products with our UK partners and many of them had a large impact and reach on the users. The aim of the article is to further dive into some of the most exciting projects we did in the UK. We’re proud to be working with some of the most famous UK brands, startups, and enterprises, helping them grow and reach new markets. Our work included anything from software development, UX&UI design, branding — everything that was needed to support these companies in their digital growth. 1. The Times We partnered up with The Times, the UK’s largest publisher which owns famous media brands like The Sun, Sunday Times, and The Times. This is a product we’re especially proud of because we were able to use our expertise and know-how in web development, UX and UI design, and overall product management and product placement. The Times Expert Traveller — your #1 destination to book a trip Times Expert Traveller combines the knowledge of The Times travel experts to create inspirational articles and travel advice on one hand and enables users to create unique custom travel experiences for themselves on the other. Whether the users want to explore new cultures or enjoy a luxury vacation, Expert Traveller oers an unforgettable holiday exclusively curated for them. The entire platform was built from scratch by Q Team 2. BBC The BBC’s TV show Pandemic was aired in 2017 and the main purpose of the show was to raise awareness among the citizens on how fast can a deadly virus outbreak spread. We were in charge of building an app that was featured as the number one medical app on both the App Store and Google Play. Voted for #1 UK Medical App in ‘Apple Store’ and ‘Google Play Q created an app that is intuitive, easy to use but at the same time very precise in simulating how fast can a virus spread throughout the UK. Users were tracked based on their GPS location, and each user can be a virus carrier. If users happen to be in the same place, there’s a chance that they will transfer a virus to each other. This was the first time scientists have simulated and collected valuable data that humankind never had before about the spread of viruses among the population. This data is now being used in research on how to prevent and stop the virus spread worldwide. https://www.youtube.com/watch?… BBC Pandemic Trailer 3. Smart Pension Smart Pension is a London based FinTech company which although relatively new to the UK pension market, are proven innovators and potential future leaders of the industry. Their platform enables various companies and also individuals to manage their investments in pension funds, educate their users through E-learning, and generally help their clients make sound and smart decisions for their future. Smart Pension is one of the fastest-growing FinTech companies in London They are currently expanding their business in the US, Canada, and other European countries. Our team is fully integrated and actively working on the development of Smart Pension’s web application. 4. GAA Even though Gaelic football isn’t a very popular sport in Croatia, that didn’t stop us to build the platform for the Gaelic Athletic Association. GAA, as it’s popularly known, is one of the largest sporting and cultural organization in Ireland and the UK. For them, we built an oicial iOS and Android App which at the moment has over 3,5 million active members. The application itself is quite robust and complex as it manages all events, schedules, clubs, players, teams. GAA has over 3,5 million members As a user, you can create your own amateur league and have all in one management solution for the whole league. It also has the News Feed for all news related to your league. What is interesting about this project is that GAA already had an app with similar functionalities — so why did we build a new one? We built it because they wanted to have a white-labeling solution that can be sold and used by any other big sports organizations worldwide which they are successfully doing as we speak. The GAA Oicial App — one of the biggest sporting organizations in Europe 5. Ginetta If you’re into fast racing cars, you probably heard of Ginetta. For one of the most famous British sports car manufacturer, in collaboration with an agency Retrofuzz, we built an entire Online Racing Center for the Ginetta Championship, including the racing dashboards and promotional website and a webshop. UK’s leading racing car manufacturer The web app enables you to explore all Ginetta cars, but also a sleek Racing Centre and a dashboard for all Ginetta drivers, sta, clients, and sponsors with placements, past and future races, a news feed, discounts, etc. You can also buy merchandise or schedule a test race if you want to try any of the Ginetta models. Online Racing Center for the Ginetta Championship 6. Northern Ireland Tourism Board In collaboration with our partner agency Made to Engage from Belfast, we developed an app that is promoting Northern Ireland as a unique destination for tourists and investors worldwide. The project was developed for Northern Ireland Tourism Board and it’s a presentational project created to showcase a map of Northern Ireland and its regions through an interactive smooth experience. Each region would present the user with interesting economic data about the region itself and also show a number of animated pins on the map. Interactive map of Northern Ireland The pins would show detailed information about certain investment opportunities or interesting attractions in the specific region. Each pin would showcase economic data, image gallery, and video player. Users could swiftly explore the map on a big 94-inch touch screen or one of 6 pads also presented in the exhibition. Belfast City Hall 7. Almac We’ve partnered up with Almac, one of the largest pharmaceutical companies from Northern Ireland to work on their TempEZ project. It’s a complex and sophisticated system that enables tracking of temperatures for various pharmaceutical products during their shipment from one location to another making sure the pharma products are shipped with care. Our team is actively working on Almac’s TempEZ project The monitor that displays the temperature is a device that is shipped alongside the pharmaceutical products and it’s constantly measuring the temperature of the products. The data that is collected from those devices are uploaded into the TempEZ system and used to determine if the content was exposed to harmful conditions. Afterward, the system also determines what are the best steps moving forward in regards to the transported products. #1 pharma company in NI — £500 mil. revenue and 5.000 employees Adrian Keindl Adrian is mag.oec. who combines his economical profession with his love of tech and the processes involved in building high-end digital solutions. He is a multi-lingual expert and the one who always has a compliment in his sleeve, accompanied by a business offer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 19, 2019 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 19, 2019 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q Grand Opening Party - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-grand-opening-party/ Q celebrated its new office with a grand opening party, bringing employees and their guests together to enjoy the new space and celebrate. Q Grand Opening Party | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q Grand Opening Party Q Grand Opening Party May 14, 2019 — 1 min read The idea of our opening party was to invite and show our second home to our plus one and to bring them together with our colleagues whom we are spending most of the day with. We organized an amazing party and we were happy to hear that our new space feels so welcoming and that everybody had a lot of fun. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 14, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 14, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q Projects in Germany - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-projects-in-germany/ Explore Q’s software projects in Germany, including mobile and digital solutions developed for Lufthansa, Medi, ViveLaCar, and MPC Capital. Q Projects in Germany | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q Projects in Germany Q Projects in Germany July 17, 2019 — 9 min read Croats love Germany — over 400.000 of them reside there permanently. Germans are also fans of Croatia, especially during the warm summer months. As the two countries have been diplomatic and trade partners for decades now, for Q it made perfect sense to start developing its German operations from the company’s very inception. We’ve created a number of advanced software solutions that are already thriving on the German market. Mobile Applications Lufthansa The Lufthansa Group has more than 135,000 employees worldwide. Lufthansa puts a lot of focus on keeping their customers happy and providing them with real-time info. This is why the Q team joined forces with them. Lufthansa Airbus A380 Together, we’ve delivered a high-end Mobile Chat solution. Q has developed and implemented an interactive interface that allows their Customer Support sta to be on top of all past and current requests. Instead of the traditional static contact forms, Lufthansa provided its customers with an interactive experience, through which they can quickly resolve all possible issues that fly in. Medi Medi, based in Bayreuth, Germany, is one of the world’s leading manufacturers of medical aids. Following the motto “medi. I feel better”, around 2,700 employees worldwide help people increase their quality of life. Acting as a catalyst between the medical industry and specialist retailers, medi develops indication-appropriate treatment aids for the patient’s benefit. Medi — World’s Leading Medical Aids Manufacturer In the area of technology — medi doesn’t lack innovation either. With Q on their side, medi will oer an extensive solution to its customers where they will be able to create 3D scans of their body parts and send the measurements directly to medi’s webshop. This process is fully automatic and handled through a single interface. Based on the measurement, the API we’ve created will return the most appropriate item to the customer. Excellence in Medicine, combined with superior software — don’t you feel better already? ViveLaCar ViveLaCar is an ambitious project, backed by some of the leading German automotive investors and experts. The company has a mission to make driving more flexible and stress-free than ever. This is currently being accomplished with the help of the solution built by the Q team. Mobility must be flexible and fit every living situation. We’ve developed an application for the partners in the ViveLaCar network, where they can easily carry out and manage their car transfers. On the other side, the end-users can browse through a wide array of vehicles, choose their desired mileage package, and make bookings at a fixed price. The vehicles are immediately available and customers can easily access them through the broad ViveLaCar partner network. MPC Capital MPC Capital is an international real asset and investment management company that focuses on 3 core segments — real estate, infrastructure, and shipping. They specialize in the development and management of niche real asset investments and investment products for international institutional investors, family oices, and professional investors. MPC Capital HQ in Hamburg Alongside the expert team at MPC Capital, Q delivered a secure solution for their ship inspectors. The iOS App allows them to keep track of their inspections and furthermore gives them the ability to compare the current state of the ship to the one found in the previous rounds of inspections. Easily attaching all types of media formats to each inspection is one of the key features. The whole user journey is completed by assigning a digital signature after the inspection is completed. Q is also working more in the Shipping Industry, helping digitalize it. Mayze This dating app has a unique twist — it is focused solely on connecting pre-selected local individuals, with a strict list of checkpoints they must pass — no exceptions! As the mayze founders would say, it’s hard to fall in love online with all the spam that is always present. By using mayze, the candidates can build their profiles and interact via an integrated chat platform. mayze — The Premium Dating App Q has created this iOS application from scratch, following the investor’s guidelines, but assisting in the business analysis process as well. Apart from the regular functionalities that you would expect in a dating app, mayze features an advanced dashboard for the admins to scan the applicants. Furthermore, the app is equipped with an Events module, where the users can get invitations to exclusive happenings in their city. Augmented Reality Solutions Vaillant Vaillant is the World leader in the field of products for heating, cooling, and hot water. The company welcomes a number of visitors to their HQ in Remscheid, Germany. As their products are quite complex to understand if you’re not a specialist in the field of boilers and heating/cooling systems, Vaillant wants to bring the entire experience closer to anyone who comes to their facilities. Load Vimeo video This video is hosted by Vimeo. Loading it lets them set cookies on your device. Augmented Reality Factory-Tour ( source ) Visitors are guided through the factory by a tour guide and every visitor gets an iPad. On specific locations in the factory, the app shows exactly what is being produced in the plant with cool interactive animations. The tour guide has complete control over AR content which the visitors see. If the visitor wants to find a certain part of the factory, an AR rabbit — the famous green one from the logo — leads the way and the visitor follows. Volkswagen VW is the largest automaker in the world — constantly innovating the industry and coming out with fresh ideas and solutions. Q is proud the be a force behind one of them — and it is a cool one! Based on VW’s concept, we were a part of a team that developed an AR solution for the application that was primarily built for VW salespeople in car dealerships or fairs. There, you can only have several car models, but VW wants to showcase them all. The app allows the users to scan a car in a magazine or do the same with a real car in front of them, using a phone or tablet. In real-time, you can change the car color, wheels, components, see its performance, or see how the car interior would look like if you decide to treat yourself with a better package. Tribeapp Tribeapp is a high-tech startup — aiming to disrupt various industries by utilizing the AR technology. The solution allows its users to create a ready-to-use avatar from a single photo or short video. The avatar can be instantly animated in real-time. Also, it collects rich visual emotional feedback — this feature helps businesses to understand their online visitors. Furthermore, due to the conversational A.I., the avatar can react to users’ feelings immediately. Tribeapp — What is the most natural interface? A face. We’ve been collaborating with the founding team from the early days in order to bring their idea and concept to a technologically advanced level. Today, it’s already winning awards (like the EU Startup Summit), raising more investments, and attracting new users daily. This is just Phase 1 — everyone is excited about building new features and making Tribeapp an industry leader. Web Development Projects Constantin Film Did you know that Constantin Film has released 36 of the 100 most successful German films of the last 20 years? This German film production and distribution leader has no shortage of creativity and drive for innovation, and to back this up with perfect technological execution, they needed a strong partner. Q jumped in to provide just that. Constantin Film has had a decisive influence on German film over the past 40 years Together with a top-notch German design team from Astral Kreativ, Q helped Constantin Film with their ambitious digitization eorts. The primary focus was on building a robust, but user-friendly Web platform that allows their fans to get insights into the newest titles from Constantin Film showing in the cinemas, get informed about the movie premieres on all German TV networks, and also to browse through the database of their movies available on DVD, Blue Ray and for download. The platform is successfully running on the company’s primary domain. Factory Berlin Factory Berlin is Germany’s largest international network of innovators. Today, it counts over 3,000 members from over 70 nations and collaborates with the most disruptive startups and corporations. Brightest minds across various fields join forces in the Factory. Factory Berlin — Germany’s largest international network of innovators Q and Factory have been digital partners from the early days. We’ve collaboratively created an entirely custom-made WordPress website based on the client’s design. It included an integration with the Events calendar and Google calendar, which is used by Factory to inform all interested parties about the upcoming activities. The whole approach to website development was modular so the Factory administrators can create their own pages — module by module. The content on the Website is amazing, visit if you will. Koenig & Bauer — Company Behind 95% of the World’s Banknotes Many of us work in cool and interesting industries. While we are o doing that, the experts at Koenig & Bauer print money — quite a tempting position to be in. All joking aside, a true fact is that Koenig & Bauer is the oldest printing press manufacturer in the world still in service. Koenig & Bauer — Metal Print A statistic that is even more interesting is that 95% of the banknotes used in the whole world are printed on KBA’s printers. Q has created the whole Frontend for one of the client’s most popular “money-makers” and it helps a lot of workers do their every-day tasks, navigating through a dashboard with a perfectly designed User Interface. Zizoo — World’s #1 Boat Rental Platform Zizoo is currently the World’s largest online boat holiday platform, also referred to as “Booking.com for boats and yachts”. There you can find over 21,000 boats across 500 destinations worldwide. Zizoo makes it easy for travelers to find the right boat by simplifying the selection and booking process. Zizoo — World’s #1 Boat Rental Platform Q has been a partner of Zizoo for more than 5 years. Continuously and to this day, Q is regularly helping Zizoo with critical phases of their growth. We are doing this by assigning top experts to take on Zizoo’s challenging Development and Design tasks. Q’s ability to scale its teams up — or — down, depending on the client’s needs, represents an optimal way to increase the speed and eiciency of each project delivery. What’s next? Q is proud to announce the opening of a new oice — Hamburg, Germany. All contact info can be found at q.agency . Don’t be a stranger. Adrian Keindl Adrian is mag.oec. who combines his economical profession with his love of tech and the processes involved in building high-end digital solutions. He is a multi-lingual expert and the one who always has a compliment in his sleeve, accompanied by a business offer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 17, 2019 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 17, 2019 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q Remote Guide — make remote work fun & productive - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-remote-guide-make-remote-work-fun-productive/ Discover Q’s remote work guide with practical tips for transparency, communication, education, team building, and staying productive remotely. Q Remote Guide — make remote work fun & productive | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q Remote Guide — make remote work fun & productive Q Remote Guide — make remote work fun & productive May 4, 2020 — 9 min read Remote is all fun and games when it’s optional. But as a must, it can quickly become frustrating and even depressing, especially during the coronavirus outbreak and the general quarantine. No matter if you live alone or in a full house, it is natural to feel kind of cut o during these “physical distancing” days. There is no lunch break mingle or usual team morale power-ups like pool table, PlayStation, and Foosball. So what then? How to bring the team spirit back up? You’ve probably heard our motto already: “Whatever the Q, we got the A.” And if successful remote work is a Q, these are our As: 1. 100% Transparency Fostering the right company culture is of great importance, which is why we simply cannot describe the value of transparency. We all know that happy employees are more productive & motivated at work, and according to multiple studies, transparency is one of the ultimate factors that determine their level of happiness, which is why we try so hard to achieve it. Some of the initiatives described below are just a part of this never-ending project. Partners: Dalibor, Filip and Vedran 2. Management Weekly Announcement Videos Our first stepping stone in remote work was to make sure everyone is up to date with all the crucial decisions and relevant information. It was, therefore, natural for our Big C Four (CEO, COO, CBO & CTO) to immediately start working on weekly update videos. Since the first week of remote, Fridays are the days on which Qumans receive a short pragmatic (but also fun) video which covers all of the week highlights. They listen about ongoing projects’ updates, client feedback, and other in-house news such as promotions & new employee announcements to plans & goals. 3. Roundtable (without a Table) Most of your employees must have a lot of unanswered questions these days, and we are highly aware of the issue. Even though we do have the previously mentioned weekly update videos, surely some of the question marks are left unresolved, which is why we decided that every 4th video will be in the form of a roundtable discussion (without the actual table though). All of our employees have a chance to anonymously post direct questions which will be answered by our Big C Four in the form of an interview with our HR Specialist Sara. We believe it is vital for everyone to be heard and don’t want to leave anything swept under the rug. Can’t wait to include the mighty table in the discussion as soon as we get back to the oice 🙂 4. Weekly Surveys Whether it’s just about the weather or about remote work, we want to know how our employees feel, which is why our HR Team regularly sends surveys on topics like “Quick Mood Check-In” or just about their personal opinion on a specific matter. Also, any other feedback is more than welcome! 5. Education, Education, Education Qumans are always hungry for knowledge, which is why education has become our primary focus lately. Unfortunately, all of the cool internal workshops we had in mind had to be postponed for a while. Juuuuust kidding. Of course, we brought them online too! There is no corona caused postponing in our case 😉 We have just reorganized them a little, so our primary focus now will be stress management, for all of the obvious reasons. Now inhale deeply, hold your breath for a few seconds, then exhale slowly & let the next chapter relax your mind 🙂 Education 6. Slack & Meet Team Quiz Dear Slack and Hangouts, thank you for being our best communication support during these hard, remote only, days. It looks like our creativity thrives during a lockdown, so we’ve come up with a comfortable yet fun way to use our everyday tools for arranging an online quiz. The idea is simple: the moderator writes a question on Slack and the team captains answer. Points are won on the first-come, first-served basis. As for the Hangouts Meet — that’s where the brainstorming happens. Each team has its Meet, where they discuss the possible answers. And watch out for typos — may the most spelling correct one win! 7. Quarantine Cookbook Working from home usually includes everyday cooking. Surely you all have some tasty backup recipes, but with the isolation length remaining unknown, you can easily find yourself repeating the same three meals all over again. So why not use your community for some fresh recipes? Well, we certainly have. And we have already found some serious cooking talents, so when the Quarantine is over, we will have our cookbook full of Q Masterchefs! (Quarantine Qookbook — kitchen elements designed by freepik.com) 8. Workout Challenge & Online Yoga Summer is around the corner, and just when we were all about to start our summer body preparations, the self-isolation came. Nevertheless, we still want our employees to stay fit and healthy, and encouraging each other is the best way to do it. You can find loads of them online or even go as far as making your workout videos. Lucky for us, we’ve got our fitness coach within our rows and our yoga instructor who’s come up with some neat stretches you can do when you start feeling back pain. We said farewells to our in-oice yoga and welcomed live workout videos by Q production 🙂 As for the equipment — forget about the kettlebells and dumbbells, this season is all about flour packs and oil bottles! So let the Workout Games begin! And don’t forget — exercise makes your mind clearer and your code cleaner 🙂 9. Virtual Couch Sessions To make your mind even more precise, we have introduced Friendly Talks with our HR Manager Anja. A psychologist in the HR is a precious gem which especially shines through this quarantine gloominess. If you have one (or more) within your rows, make sure to use their knowledge correctly. Believe us when we say it can be quite useful to have a virtual cup of coee with a professional when you’re feeling a bit down. 10. Q Talks Since we are very proud of all of our members and believe an appreciation of uniqueness is key to unity, we decided to give everyone a chance to be a star for a day and share their experiences and knowledge with everyone by creating theme-based talks through Hangouts meet. Our first Q Talk was about Dorotea’s Patagonia & Desert outdoor 3-week adventure and exploring the magical Buenos Aires. After our QA Engineer Dora the “Explora,” as we love to call her, our Project Manager Davor took us to the magical Philippines. We can’t wait for our Head of Communications to take us to Vietnam this week! But Q Talks is not just reserved for travelers. Whether you’re interested in sharing each other tips & tricks on a specific topic such as surviving remote work while being a parent or would just like to share some of your experiences, Q Talks is the right place for you. And everyone is more than welcome to participate 🙂 Davor took us to Filipines 11. Quman Stories This situation is a once-in-a-lifetime experience (well, at least we hope it is). Don’t just count the downsides, recognize & embrace the positive ones too. Make a template for Quarantine story sharing so that everyone can easily show how they’re spending their time & it will always stay as a reminder to this unique state. The braver ones can also take their colleagues on a tour of their homes in the form of “My Crib“ videos. Lights, camera, action! 12. Free Time Games Channel Our dear pool table is gathering dust right now, and we can’t continue all of our fun in-oice tournaments until we get out of the Quarantine. (We should think about opening reservations because we can already imagine the lines in front of our Fun Room.) In the meantime, we decided to open a games channel with suggestions like online Pictionary, Card games, etc. In this way, you’ll know who’s interested and when you’re up for a short break, just send a Slack message and wait for someone to reply to your challenge. 13. Movie Night Unfortunately, the cinema is a big NO these days. But lucky for us, Netflix has an excellent new addition called Netflix party, which allows you to stream movies on multiple devices simultaneously and even integrates a chat box so you can comment while watching. It looks like we’re all in a long-distance relationship now. Isn’t that cute? #LoveInTheTimesOfCorona 14. Learning Together Since we won’t be leaving our homes any time soon, why not use this extra time eiciently and learn something new, especially since multiple sites oer free online courses on dierent topics. Some of them are Ivy League Courses, EdX, Udemy, Coursera, etc. It is also quite useful to open a Slack channel dedicated to education (ours is called #knowledgesharing) so that you have an ultimate one-stop knowledge shop. So every time you read or discover something interesting, you can easily share it with your peers. Motivate your teammates to become your classmates and exit this isolation with more precious knowledge. Stay home, but work on yourself too 🙂 We hope you enjoyed reading this at least half as much as we enjoyed creating and implementing it. At first, we were a bit skeptical about how this Quarantine would impact our community. Still, it turns out that the high bond we have been working on has just proven to be one of our critical assets in this fight the whole world is facing right now. We have shown that even though we’re distant, we can still be “together.” And being together makes us much stronger. 🙂 That is the ultimate reason we will keep working hard to make our employees feel accompanied and supported, primarily through the most challenging times like pandemics, isolation, and earthquakes. EXTRA TIP: Sum up all of your team building activities and share them in the form of a PDF Remote Guidebook to make sure everyone is familiar with them. And it will also make a great memory. Win-win! For more tips&tricks on how to survive remote work and what tools to use, read “How to Work Remotely and Still Be the Best”. Blanka Cesic Blanka is always on the lookout for talented and passionate individuals to join our growing team at Q agency. She is a Grammar nazi but trustful and kind, so you can count on her if you have some kind of outbreak or a spelling dilemma GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 4, 2020 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 4, 2020 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q Saves Lifes - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-saves-lifes/ Q is helping the Croatian Mountain Rescue Service improve mountain safety with a new emergency app for remote areas. Q Saves Lifes | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q Saves Lifes Q Saves Lifes March 6, 2020 — 1 min read The Croatian Mountain Rescue Service is a volunteer, not-for-profit, and public organization. It is specialized in rescuing in mountains, on rock faces, in caves, and other unapproachable places. To make Croatian mountains and other adventure areas even safer, Q will create a new app that will enable a call-to-help using just one click, even in the most remote areas without GPS signal. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 6, 2020 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 6, 2020 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q won the Grand Prix Best Employer Brand Award… and 5 more! - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-won-the-grand-prix-best-employer-brand-award-and-5-more/ Q wins six Best Employer Brand Adria awards, including the Regional Grand Prix, celebrating its people, culture, and employer branding. Q won the Grand Prix Best Employer Brand Award… and 5 more! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q won the Grand Prix Best Employer Brand Award… and 5 more! Q won the Grand Prix Best Employer Brand Award… and 5 more! December 21, 2021 — 3 min read A good employer brand means many things, amongst which easier hiring and better employee retention are just the tip of the iceberg. As we always say, Q begins and ends with its people , and we’ve been working hard on putting those words into action. When we heard about the Best Employer Brand Adria competition, we saw an opportunity to gather all we did in the past year, go through the results, review it, and see if we are on a good path of building something more out of our company and brand. So we started collecting all the projects and initiatives we do for our employees and how we present ourselves in the public and community. And oh boy, little did we know how much work is ahead. Soon enough, we had over 200 application presentation slides of who we are as a company, the Bible of our Employer Brand . The application process takes a few months, and the judging panel chooses winners for all categories, except for the People’s Voice Award . Award Ceremony Finally, after the extensive preparation, the final evening and results were here. The categories in which we won are: Regional Grand Prix Best Employer Brand – Medium Companies Best Employer Brand – IT Sector Best Employer Brand Team Best Creative Campaign People’s Voice Award Best Employer Brand – Medium Companies and Best Employer Brand – IT sector include comprehensive employer brand strategy implementation, internal and external brand communication, creative solutions, quality of campaigns, innovation, and achieved results. Best Employer Brand Team Award goes for the extensive work in being Q ambassadors and leading by example. The teams involved in these actions are Communications, People&Culture, Talent, and Operations. Producing video content for internal and external communication needs was our highlight of 2021. Our YouTube channel transformed our communication and earned us the Best Creative Campaign Award. The public vote got us the People’s Voice Award for our Q Values video , representing our three core values. The Communications team receiving a Grand Prix award. Thank you, Qumans! Winning 6 award s that evening, being the most awarded company, and becoming the Grand Prix Award winner was not something we’d expected, for sure. But after seeing all our eorts and results in one place, we knew we deserved it. The actions we put into our people and making Q a desirable employer exponentially grow each year, and we won’t stop any time soon! Still, it is indescribable what getting these awards means to us. They are a huge recognition of our eorts, dedication, teamwork, and patience. In 2021, we focused on people more than ever before and worked across several departments to improve employee satisfaction . But obviously, the lion’s share of our employer branding comes from our Qumans , so thank you all for making this happen. Marta Juricic She is a marketing and PR enthusiast responsible for developing, implementing, and executing strategic marketing plans. Classy girl with a bit of hood in her, and an attitude which she loses when there’s a dog nearby. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 21, 2021 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 21, 2021 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q WoW, Upgraded: A Reflection on Spec-First Development - Tech Consulting and Software Engineering URL: https://q.agency/blog/q-wow-upgraded-a-reflection-on-spec-first-development/ Explore how we upgraded our WoW with spec-first development, creating clearer requirements, and a stronger delivery process. Q WoW, Upgraded: A Reflection on Spec-First Development | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q WoW, Upgraded: A Reflection on Spec-First Development Q WoW, Upgraded: A Reflection on Spec-First Development June 17, 2026 — 22 min read Spec-first development is not about development suddenly having to change because AI tools have appeared. That would be too simple a conclusion. What we have done at Q is much more important than that: we took our own way of working, which we have been developing for years through real projects, real clients, real deadlines and real problems, and upgraded it for a new phase of software development. Q has never built quality by accident. We have always aimed to do our work better and with higher quality, and we have had the freedom to explore ways to improve how we work. We looked for processes and mechanisms that help us preserve knowledge, share it with colleagues and make it available across the organization. Whenever we recognized through practice that an approach could improve quality in the long term and make the way teams work more consistent, we tried to turn it into a standard. We have done this before with tools and practices such as Docker in local development, and I see spec-first as a similar step. Not as a one-time experiment, but as an attempt to make a good way of working more repeatable, clearer and available to all teams. Our way of working has always relied on structure, clear communication, technical responsibility, the review process, collaboration between different roles and the ability to turn complex requirements into deliverable solutions. This is part of why we are recognized as a development partner at a high level, not only locally but globally. Spec-first is not a replacement for that. Spec-first is the logical continuation of it. If we already had a good process, we are now making it more explicit. If we previously had knowledge in the heads of seniors, leads, PMs, BAs and designers, we are now trying to document it better, structure it and make it available to the whole team, as well as to the AI tools we use in development. Because AI can speed up delivery, but it cannot know our way of working on its own. It does not know our project context. It does not know the agreement with the client. It does not know why we made a certain architectural decision six months ago. It does not know where the scope boundaries are. It does not know what Q considers acceptable quality unless we define it clearly. That is where spec-first becomes important. Not as a new layer of bureaucracy, but as a way to turn what we already do well into a more stable, repeatable and clear framework. From agile work to a clearer decision trail In our agile way of working, change is part of everyday life. Clients often come with new requests, priorities shift, and sometimes developers themselves propose or introduce changes to improve the solution. That is normal. Good development is not blindly following a plan someone wrote three months ago. Good development includes learning, adapting and making better decisions along the way. But every change has its cost and impact on the project. That is why it is important to have a clear decision trail: what changed, why it changed, who requested the change and who delivered it. This is exactly why structured artifacts and specifications are not only tools for planning and development, but also mechanisms that provide greater visibility, easier change management and clearer ownership throughout the entire project lifecycle. In practice, this means that spec-first is not only a technical approach. It is also a way for the team to better understand its own decisions. And that is often the difference between a project that simply moves forward and a project that progresses in a truly controlled way. Artifacts as a shared source of truth In this process, artifacts created or updated by individual skills during development play an important role. We are not talking about documentation as a formality, but about records that carry decisions, context and knowledge needed for quality delivery. The Constitution document defines architectural principles, technical constraints and the basic rules of the system. The specification describes business requirements, rules, user flows and the expected behavior of the system. The UIX document connects user experience and design decisions with the rest of the development process. It helps ensure that information from Figma, such as screen structure, components, states, flows and interactions, does not remain isolated in the design tool, but becomes part of the context that can be used in the specification, technical design and implementation. The Design document serves as a technical blueprint for the solution; it describes the system structure, key components, integrations, data flows, and decisions that guide implementation. The Tasks document then breaks complex requirements into smaller, clearly defined tasks ordered in the sequence in which it makes sense to implement them. The Implementation skill goes through those tasks one by one, which breaks implementation into smaller units that are easier to review, validate and correct if needed. After that, it writes an implementation summary, a summary of what has been implemented. The Review skill checks whether the implementation is aligned with the previously defined artifacts. Its value is not only in checking whether the code works, but also in checking whether the implementation stayed true to the agreed scope, architectural rules, design decisions and expected system behavior. Together, these artifacts carry the decision trail made during the project and form a shared source of truth that enables consistent execution of those decisions throughout the entire development process. This is not documentation that stands aside and gathers dust. It is a working context that helps the team understand faster what is being built, why it is being built, how it is being built and by which criteria we check whether it has been done correctly. Role knowledge, written into the process Today, we no longer look at project knowledge only through people and their roles, but also through the artifacts created during the project. Just as the solution architect defines the fundamental rules and guidelines of the system through the constitution, other disciplines also get their structured sources of truth. The specification becomes the place where the business analyst shapes business requirements and rules. The product or project manager uses it to guide priorities, expectations and delivery boundaries. The designer communicates user experience and interaction principles through UX guidelines. Design documents reflect the technical decisions of architects and leads. Tasks are created from the way the development team thinks about delivery, breaks down work and organizes implementation. Each of these artifacts represents concentrated knowledge from a specific role and makes that knowledge clear, available and applicable throughout the entire project lifecycle. When we built our spec-first framework, we started from something that was already natural to us: every key role on a project has its own responsibility, its own knowledge and its own way of making decisions. That is why we gave each of those roles a corresponding AI agent skill that reflects the way that person contributes to the project. For example, when forming a new project team, the solution architect and tech lead are often involved early on. The solution architect brings a broader architectural perspective and helps establish the foundations of the system, while the tech lead participates from the beginning in shaping the technical direction so that decisions are applicable in everyday development, the review process and further delivery on the project. Spec-first now makes that way of thinking more explicit through the Constitution document. The Constitution is not just a generated document at the beginning of the project, but a place where the initial architectural vision connects with the practical rules the team uses during development. It defines principles, constraints and architectural guidelines that serve as a reference point for the whole team, as well as for the AI agents involved in the process. In this way, important technical decisions become clearer, more accessible to the team and concrete enough to truly guide implementation. We look at other roles in the same way. The business analyst brings understanding of the business context and requirements. The product or project manager brings priorities, expectations and the broader project framework. The designer brings user experience, interface structure and interaction principles. Developers and leads bring technical feasibility, implementation quality and responsibility for the maintainability of the solution. Spec-first allows knowledge that was previously often implicit to become clearly written, structured and available to everyone. At a high level, that is exactly the core of the spec-first approach: knowledge, decisions and responsibilities that used to be scattered across people, meetings and communication channels are turned into structured artifacts that become a shared source of truth for the entire team and for AI tools. Value from a developer’s perspective From a developer’s perspective, the value becomes even more concrete for me at the operational level. A large part of development time is not spent on writing code itself, but on understanding context: what exactly needs to be done, why something was decided in a certain way, what the boundaries of the solution are and how my part fits into the broader picture of the system. When that information is written in specifications, design documents and tasks, I spend less time searching for answers across messages, meetings or colleagues’ heads, and more time on actual implementation. Even more importantly, this way of working reduces the number of assumptions I have to make as a developer. Instead of guessing what the author of a requirement had in mind or why a certain architectural decision was made, I can rely on artifacts that carry that context. This makes development easier, improves the quality of the review process and makes onboarding new team members significantly faster. With the emergence of AI tools, this effect becomes even stronger. When an AI agent has access to the same sources of truth that I use, I get an assistant that understands the project context much better than it would from a single prompt. The result is not only faster implementation, but also fewer wrong assumptions, less revisiting of decisions that have already been made and greater consistency across the entire codebase. Cost, models and the feeling of control One of the practical questions that naturally comes up when using AI tools in development is the question of cost. How much does it actually cost, how much does it depend on the model, and can we get a quality result without constantly manually choosing the most expensive options? My experience is that the spec-first approach brings a lot of value here. In everyday work, I mostly use auto mode in Cursor, where the tool itself orchestrates model selection in the background, so I do not worry about which model is used for each individual step. When the AI agent works from well-prepared context built through the spec-first artifacts, such as the constitution, specification, UIX, design, and tasks documents, the output is good enough that I do not feel the need to constantly select models manually or force stronger ones. In other words, the focus shifts from the question “Which model should I choose now?” to the question “Have we given the model clear enough context to do a good job?” That is a much more useful way of thinking for me, because as a developer and lead I can actually influence it. In practice, working with auto mode in Cursor has shown that in most cases the monthly cost can stay within a reasonable range, especially when AI is not used for endlessly regenerating the same problem, but for guided implementation through clearly defined tasks. Exact numbers can depend on the project, intensity of use and internal rules, but the important point is not only how much the tool costs, but how much time and how many wrong attempts it helps us avoid. Spec-first gives me one more important thing here: a sense of control. When the context is well prepared, AI does not lead the process instead of me. I still guide, check, make decisions and use my own technical knowledge. Sometimes I need to guide the model more, direct it further or correct it, but that is actually healthy. It means the developer does not step out of the process, but remains responsible for the direction and quality of the solution. In other words, spec-first is not about developers thinking less. It is about developers spending less time on wrong assumptions and more time on decisions that truly require their experience. Ownership of artifacts A further important step is clearly defining ownership over these artifacts. Decision owners existed before as well, but information was often scattered across tickets, documents and communication channels. Today, the decision trail remains written inside the project codebase through artifacts that have their owners and an approval process. The team lead takes responsibility for the constitution and design documents and approves them as the owner of the project’s technical direction. The business analyst, product owner or project manager is responsible for specifications and their approval because they represent the business source of truth. The development team, through review and approval of tasks, takes responsibility for how the requirements will be implemented. In this way, it is not only clear what was decided, but also who made the decision, who approved it and where it is permanently recorded. That is an important shift. Because in complex projects it is not enough to know that something was done. We also need to know why it was done exactly that way. UX/UI, Figma and MCP as part of the same context A good example of this is the UX/UI discipline. For years, designers have not used Figma only to create static screens, but to define interface structure, user flows, components, variants, states, visual language and interactions. In the spec-first approach, we further connect this way of working with the rest of the development process through the UX/UI skill, which knows how to read design artifacts and turn them into context relevant for the specification, design documents and implementation. When MCP, or Model Context Protocol, is added to this, that context no longer needs to travel manually through screenshots, copy-pasted descriptions or isolated comments. AI agents can retrieve relevant information from Figma, specifications, the constitution and other sources of truth in a standardized and controlled way exactly when they need it. In this way, Figma does not remain only a space for design, but becomes one of the active sources of project context that connects designers, developers and AI agents throughout the entire development process. That is an important difference. It is not only about having a design that someone later “translates” into code. It is about design decisions becoming part of a broader, structured development context. What spec-first actually means in practice In recent months, there has been a lot of talk about the spec-first approach, but it often remains unclear what it actually means in practice. At its core, it means defining key decisions, requirements and expectations before implementation, and making the specification the central place around which business and technical stakeholders align. This approach is not new, but today it gains additional importance because it enables better collaboration between teams and more effective use of AI tools during development. Spec-first forces us to answer earlier the questions that appear later anyway: What exactly does the feature do? What does it not do? What are the edge cases? What are the business rules? Which parts are UX decisions, and which are technical decisions? What data is needed? What needs to be approved before implementation? What is tested? What are the risks? In classic development, these questions are often split across several channels: part of the context is in the task, part in Slack, part in a meeting, part in the design, part in the developer’s head, part with the PM or BA. Spec-first reduces that room for interpretation. That does not mean everything will be perfect. But it means decisions are made earlier, more visibly and in a more structured way. And when decisions are made earlier, implementation has much less room to wander. SPEC gate: where the feature is truly defined The SPEC phase is one of the most important phases, especially for PM, BA and delivery. This is where it becomes clearest what the feature is and what it is not. A developer can implement quickly later, but only if the scope has been defined clearly enough. If the SPEC is not clear, development becomes expensive guessing. Maybe faster guessing than before, but still guessing. A good SPEC should capture the business goal, user flow, rules, constraints, edge cases and expected behavior. It does not need to be a novel. But it does need to be concrete enough that multiple people on the team can read the same document and reach the same conclusion. That is what is often missing when we work in a fragmented way. Not because people do not know their job, but because context easily gets scattered. One part of the context is in the task, another in the design, a third in a conversation and a fourth in someone’s experience. Spec-first says: before we start, let us put it in one place. DESIGN phase: fewer assumptions, more alignment After SPEC comes the part where we elaborate how the feature will work at the level of design, architecture and user experience. It is important to emphasize one thing here: spec-first does not replace designers, PMs, BAs or developers. It gives them a better framework. The UX/UI part is not only a matter of appearance. It is a matter of interface behavior, states, validations, empty results, errors, permissions, loading, responsiveness and all those “small” details that determine whether a feature works in practice or not. And we know how it goes. If those details are not defined before implementation, someone will define them later. Most often the developer. Or AI. Or a bug report. That is the most expensive designer: a bug report after implementation. Spec-first helps decisions be made earlier. Not all of them, not perfectly, but enough so that implementation does not start in the fog. TASKS phase: AI must not receive chaos as input Only when we have SPEC and DESIGN does it make sense to break the work down into tasks. This is the part where spec-first connects very well with AI tools. AI can help elaborate tasks, dependencies, implementation order, checks and tests. But again, the quality of the output depends on the quality of the input. If AI gets an unclear feature, it will generate unclear tasks. If it gets a good SPEC and a good DESIGN, it can generate a much more useful breakdown. This brings us to an important change in the way we work: AI is not only a tool for writing code. AI becomes a tool that helps us structure development before code. That is a big difference. Because then we do not use AI only as a “faster junior” who types. We use it as an assistant in preparation, elaboration, review and implementation. But we still have to lead the process. AI can speed up execution. It must not take over ownership. PM/BA and spec-first Spec-first is often perceived as something developer-focused because it ultimately lives in the repository and is used before implementation. But in reality, it brings the most value when it is involved even before development. PMs and BAs do not necessarily need to work in the repository in the same way as developers. But their input is essential in the SPEC phase. They help define what the real problem is, what the user expects, what the business rule is, what the priority is and what is out of scope. There can still be a working version of communication, comments and discussion in tasks. But the repository should contain the final version that goes into development. That is the difference between a conversation and a decision. A task can be the place where the discussion evolves. The spec should be the place where the decision is locked. Spec-first does not remove the review This needs to be said very clearly: spec-first does not mean we can blindly accept AI output. AI and people still make mistakes. Especially when they are in a hurry. Having SPEC, DESIGN and TASKS does not mean we can skip senior review. Quite the opposite. Review becomes even more important because now we are not only checking whether the code works, but also whether the implementation is aligned with the agreement. We need to be especially careful when AI works in a stack or area that is not our strongest technical skill. The output can look convincing. The structure can look professional. Names can be good. Even tests can exist. But that does not automatically mean the solution is correct. Senior review is still mandatory. It simply has better material to check against now. Instead of the reviewer having to guess what the developer intended to do, they can compare the implementation with the SPEC, DESIGN and TASKS document. That makes the review more concrete. What changes for leads From a lead perspective, spec-first is especially interesting because it changes where control happens. Without a spec-first approach, the lead often reacts late. The feature is already implemented, the PR is large, the deadline is close, and then it turns out that some assumptions were wrong. At that point, corrections become more expensive, and changes require more time and coordination. Spec-first moves control earlier. The lead can review the Constitution, SPEC, DESIGN and TASKS before a large PR is created. They can stop the wrong direction before hours of implementation are spent. They can see where there are gaps in thinking. They can help the team avoid going in the wrong direction. That is not micromanagement. That is technical leadership. A good lead does not need to write every line of code. But they need to help the team know what is being built, why it is being built and according to which rules it is being built. Spec-first provides that structure. The biggest challenge: discipline Of course, spec-first is not magic. The biggest challenge will not be the tool. It will not even be the document format. The biggest challenge will be discipline. It is easy to skip SPEC when we [truncated] ======================================================================== # Q2 All-Staff Meeting - Tech Consulting and Software Engineering URL: https://q.agency/blog/q2-all-staff-meeting/ Q’s Q2 all-staff meeting covered company updates, new clients, projects, upcoming events, and transparent communication with employees. Q2 All-Staff Meeting | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q2 All-Staff Meeting Q2 All-Staff Meeting July 8, 2019 — 1 min read Clear communication is an important part of every business. Employees need to see an open and transparent decision-making process and need to be included and up to date, because many things aect them directly. That’s why we regularly hold sta meetings, every 3 months. Filip, the CEO, and Harry, our newly elected CTO, shared a lot of noteworthy news, company updates, new clients, projects, and upcoming events like meetups and teambuilding! When sta is included in discussions and decisions on certain issues, it is good for morale and motivation in the workplace. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 8, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 8, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q3 All-Staff Meeting - Tech Consulting and Software Engineering URL: https://q.agency/blog/q3-all-staff-meeting/ Q’s Q3 All-Staff Meeting brought the team together to share business updates, celebrate milestones, exchange feedback, and discuss upcoming goals. Q3 All-Staff Meeting | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q3 All-Staff Meeting Q3 All-Staff Meeting October 2, 2019 — 1 min read An all-sta meeting is not just another meeting. It is the meeting. It’s the driver of transparency and alignment within the team. Our All-sta meeting is a regular company-wide gathering to allow all of our employees and stakeholders to meet with the leadership. Our goal is to share business updates of the past quarter, solicit feedback, celebrate milestones, and the people who made them possible, and also to create a space for the Q&A. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 2, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 2, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # What Are the Best QA Practices Enterprises Can’t Afford to Ignore? - Tech Consulting and Software Engineering URL: https://q.agency/blog/qa-best-practices-enterprises/ Learn how to implement effective QA strategies and best QA practices that balance various types of testing at scale. What Are the Best QA Practices Enterprises Can’t Afford to Ignore? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > What Are the Best QA Practices Enterprises Can’t Afford to Ignore? What Are the Best QA Practices Enterprises Can’t Afford to Ignore? September 30, 2025 — 11 min read Learn how leading enterprises, including fast-paced digital publishing sector, mission-critical engineering systems, and rapidly evolving public sector digital services, implement effective QA strategies and best QA practices that balance various types of testing at scale. 1. Client QA Practice Analysis 1.1 QA in Mission-Critical Engineering Systems Overview: Nature of the Domain: Digital Logistic Systems are critical communication tools for transportation coordination across global offices. These solutions operate within the offshore engineering domains, where reliability and precision are essential. QA team structure: The QA function is part of a cross-functional team that includes development, design, product management, and QA. The team collectively defines, builds, tests, and delivers product increments. Development lifecycle: Work is managed within a 2-week Agile sprint framework, prioritizing the delivery of potentially shippable increments for new features or bug fixes. Testing Practices: Emphasis on Reliability & Integration: Testing is focused on accuracy, reliability, and system integration . This ensures minimal risk in logistics and material tracking. Types of Testing Conducted: Functional testing, regression testing, exploratory testing, integration testing, acceptance testing, and non-functional testing (including performance and security testing) are all part of the QA process. Testing occurs early and frequently , with structured steps before release: requirements analysis, test strategy preparation, execution, validation and reporting, UAT, and post-release monitoring. Automation coverage: Test automation is in place, but primarily covers basic, repetitive tasks . Complete regression testing remains largely manual, highlighting an opportunity to expand automation for broader coverage and faster cycles. Team & Compliance Alignment: Documentation & Traceability: QA maintains test plans, test cases, test data, execution reports, and bug reports as core artefacts. These ensure clear traceability of testing efforts, decisions, and outcomes—critical in a regulated engineering context. Collaboration with Domain Experts: The cross-functional team holds daily stand-ups , sprint planning, retrospectives, and demos to align progress and resolve blockers. Involving domain experts ensures business needs are accurately translated into functional and testable requirements. Conclusion: Key Differentiators & Maturity: This client demonstrates a disciplined and structured QA approach , striking a balance between comprehensive manual testing and selective automation. Strong emphasis is placed on documentation, early involvement of testers, and alignment across teams. Takeaways for Enterprise QA in Critical Systems: Structured planning, documentation, and detailed validation are non-negotiable in safety-critical systems. Automation should be planned from the start and developed alongside manual practices to achieve true QA maturity. Early tester involvement in planning, design, and development phases prevents issues downstream. A mature QA process ultimately ensures higher-quality software, reduced costs, faster delivery, and greater customer satisfaction. 1.2 QA in Rapidly Evolving Public Sector Digital Services Overview: Type of Digital Services Delivered: National-scale e-government platform for regulated workforce management , serving as the central platform for companies and government entities to request and manage labor forces from domestic and foreign markets. It is a large-scale e-government solution , supporting highly regulated workflows and national-scale demand. Agile QA Team Setup and Client/Vendor Collaboration: The team is cross-functional , including developers, QA, product owner, and Scrum master. The Scrum framework is followed with 2-week sprints and ceremonies (planning, refinement, estimation, demos, retrospectives). Each sprint, one team member is designated as the point of contact (PoC) to streamline communication with the wider organisation. Need for Quick Iteration & Change Management: Delivery happens in a “big bang” release, WoW , where domains are deployed together after extensive approval cycles. QA needs to plan testing within these constraints, balancing fast iteration in sprints with organisation-wide delivery requirements. Testing Practices: Types of Testing: Functional, regression, exploratory, API, and non-functional testing are conducted depending on the ticket scope. Developers contribute early with unit tests and code reviews (both FE and BE). Tooling & Test Environment Challenges: Test execution is managed through Jira with integration into TestMo . Documentation, test data, and domain knowledge are maintained in Confluence . Testing occurs across development, staging, and production environments , but QA does not own deployments. Lack of a dedicated QA environment is a recurring challenge. Manual vs. Automation Strategy: Testing is predominantly manual . There is currently no automation in place , but plans exist to start with regression packs. To prepare for automation, test cases are marked as eligible or not for future automation during task validation. QA Metrics & Continuous Improvement: KPIs Used: Defects are tracked in Jira by sprints, teams, and product domains . Progress transparency is maintained across teams with clear reporting on defect trends. Feedback Loops & Collaboration Patterns: Daily syncs, planning, refinement, demos, and retrospectives ensure transparency and alignment. QA maintains test cases, test data, and execution logs , ensuring knowledge is preserved and reusable. A QA community of practice exists across domains, with fluid QA resources occasionally rotating (every 3–12 months). This supports knowledge sharing and smooth transitions between domains. Conclusion: How QA Scaled to Meet Public Demand: QA is embedded in a highly collaborative Agile environment, with structured ceremonies, documentation, and transparent communication ensuring large-scale delivery in a regulated public sector context. Early QA involvement in planning and refinement ensures blockers are caught early, while collaboration with developers provides continuous testing support. Takeaways for Fast-Moving Digital Transformation Projects: Strong documentation and communication practices are key to scaling QA across large, regulated systems. Regression testing remains a pain point . It lacks a clear schedule and often competes with new deployments. Planning dedicated regression cycles and environments is critical. Even without test automation, QA can deliver value if test cases are well documented, regression packs are maintained, and transparency is high . However, automation planning should start early to ensure long-term scalability. A QA community across domains strengthens knowledge continuity and helps organisations scale QA coverage effectively. 1.3 QA in Fast-Paced Digital Publishing Sector Overview: Type of Product/Project: A custom-built large-scale digital publishing platform serving editorial and mobile-first content needs that enables editors to create and manage articles. It includes both a frontend for article presentation and a mobile app for iOS and Android. Unlike a traditional CMS, this solution is fully developed in-house. QA Team Structure: A hybrid model combining outsourced QA engineers and in-house staff. The QA team is separate from development and product teams , but supports testing throughout the product lifecycle. Development Methodology: Agile methodology, with testing and release cycles adapting to product roadmap priorities and new feature/fix schedules. Testing Practices: Types of testing employed: Manual functional and regression testing. Limited automation is in place (not all areas are yet automated). Regression testing before every release, aligned with the version scope. Frequent regression cycles, typically 2–3 times per week across environments. Tools used: No specialised tools, such as Cypress or BrowserStack, are used for automation or similar types of testing. Instead, QA relies on physical devices for testing desktop and mobile solutions. Ticketing and test management are handled in Jira . Test Case Management: Test cases are created after each ticket is tested (if they do not already exist), ensuring coverage and building regression packs for future cycles. Role of manual vs. automation testing: Manual testing is the majority of the workload. Automation exists but still has room to grow. Team Collaboration & QA Culture: Integration with dev teams, DevOps, and product QA functions as a standalone group , not directly embedded with development or product. Communication with developers or product owners is ad hoc and on an as-needed basis . QA’s are not integrated into daily standups or continuous synchronization points within the project development teams. Communication practices, documentation, and process alignment Documentation exists and is used daily, but not all processes and scenarios are fully documented. While test cases are maintained, gaps in coverage exist. Conclusion: Key strengths and lessons: Strong consistency in regression testing . Disciplined approach in test cases creation after the ticket is validated. Ability to cover both web and mobile testing without reliance on external tools. Challenges and how they were addressed: Limited integration with development and product teams is partly offset by structured regression cycles and documentation practices.Low automation coverage is compensated for by strong manual test coverage. Takeaways for other enterprise QA teams: Even without extensive tooling, QA can deliver significant value with consistent regression cycles and actively maintained documentation. However, scaling QA requires balancing manual and automated testing and improving collaboration with development teams. 2. General Conclusion: Best Practices and Recommendations Consolidated Lessons: Looking across our three clients, it’s clear that enterprise QA is never a one-size-fits-all discipline . Each organisation has shaped its QA practices to fit domain needs: In safety-critical industries , the structure, documentation, and traceability are the backbone of quality. In the public sector, digital transformation requires scale, transparency, and collaboration across large stakeholder groups. In a fast-moving digital media environment, the speed, consistency, and disciplined regression cycles keep delivery on track despite limited automation. What unites them is a common set of principles: Early QA involvement in planning and design prevents downstream issues. Consistent regression testing , whether manual or automated, safeguards release quality. Strong documentation and communication ensure knowledge is retained and shared across teams. Automation is a long-term goal , even if manual testing currently carries the load. For enterprises, the lesson is simple: QA maturity is not defined by tools or automation alone. It’s about adapting practices to the domain , embedding QA into the lifecycle, and fostering a culture of collaboration and accountability. Done right, QA becomes more than defect detection! It becomes a driver of business resilience, customer trust, and sustainable delivery at scale . Also, today, AI is in every corner of software development , as it is in Quality Assurance. Tools like Cursor, Copilot, and specialised solutions from QA tooling companies such as BrowserStack can significantly accelerate test automation , demanding fewer resources than before. Embracing AI solutions early is a strategic move for the future, offering substantial benefits in cost savings and reduced time to market. Recommended Best Practices: Shift-left approach and QA as part of design: Involve QA from the earliest stages of planning and design. Ensure testers participate in requirement analysis, backlog refinement, and sprint planning to prevent defects before development begins. Leverage domain experts early to make sure business-critical logic is validated upfront. Hybrid testing strategy: Balance speed and depth by combining manual exploratory/regression testing with automated smoke/regression packs. Start automation with high-value, repetitive regression scenarios, while keeping manual testing for complex, evolving, or business-critical workflows. Evolve the automation scope incrementally to avoid bottlenecks and maintain coverage, especially in fast-paced environments. Toolchain recommendations: Integrate test automation into CI/CD pipelines for faster release confidence and early defect detection. Use test management solutions (e.g., Jira + XRay, TestMo, Confluence, or similar) to centralize test cases, results, and traceability. Invest in cross-device/browser testing tools (e.g., BrowserStack, LambdaTest, Cypress, Playwright, etc.) to scale coverage efficiently beyond physical devices. QA documentation and knowledge sharing as assets: Treat documentation (test cases, test data, execution logs, glossaries) as a living asset that ensures continuity and accelerates onboarding. Build communities of practice across domains to strengthen knowledge sharing and reduce silos. Keep regression packs up to date after every release cycle to ensure repeatability and reduce risk. Aligning with compliance when necessary: For regulated industries, maintain structured documentation and traceability aligned with compliance standards. Encourage QA team members to adopt ISTQB-aligned practices for consistency in test design, execution, and reporting. Where applicable, map QA processes to organizational or industry standards (ISO 9001, ISO/IEC 25010) to meet both regulatory and customer expectations. Supporting Sources and References: Industry white-papers or studies (e.g., Capgemini World Quality Report): Capgemini World Quality Report – annual insights into global QA and testing practices, trends, and challenges. Gartner Research on Agile and DevOps QA – recommendations on evolving QA roles in enterprise transformations. State of DevOps Report (by DORA/Google Cloud) – data-driven guidance on testing, automation, and CI/CD maturity. Internal QA maturity models or frameworks to search for: QA Excellence Maturity Model – an internal agency framework for evaluating enterprise QA maturity across people, process, and tooling. Agile Test Quadrants framework – categorising testing practices across functional, non-functional, manual, and automated layers. Test Automation Pyramid (Mike Cohn) – prioritising automation layers (unit, integration, UI) to guide sustainable automation. Certifications and standards: ISTQB Advanced / Agile Extension – structured knowledge base for advanced test design, automation, and Agile integration. ISO/IEC 29119 – internationally recognised standard for software testing processes, documentation, and lifecycle management. IEEE 829 & IEEE 1012 – standards for test documentation and software verification/validation processes. ISO/IEC 25010 – quality model for software and system product evaluation, often referenced in enterprise QA. Relevant blog posts, tech talks, or documentation for deeper reading: Ministry of Testing – articles, courses, and community discussions on enterprise QA, test automation, and scaling practices. ThoughtWorks Technology Radar – emerging tools and practices in test automation and CI/CD. Google Testing Blog – practical insights on testing at scale in large engineering organisations. Martin Fowler’s blog – resources on continuous delivery, test automation strategy, and system reliability. Are You Looking For Best QA Practices for Enterprise-Level Projects? With our vast and extensive knowledge and team of skilled teams who are here to apply best QA practices in enterprise QA testing, feel free to contact us . We are here for you to start working together. Ante Budimir Ante is the Manager of QA Excellence at Q. With over a decade of experience in software quality assurance, Ante has grown from hands-on manual and automation testing roles to leading quality strategies across diverse projects. His career spans both large-scale enterprise systems and fast-moving startup products, always driven by a commitment to delivering top-tier software quality. When he's not championing quality, Ante enjoys snowboarding across Europe’s mountain peaks and, as a former competitive swimmer, gliding through the Mediterranean seaside. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 30, 2025 — 11 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 30, 2025 — 11 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # QA Testival Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/qa-testival-meetup/ Q’s QA Testival Meetup brought the software testing community together to exchange knowledge, discuss quality assurance, and promote creative problem-solving. QA Testival Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > QA Testival Meetup QA Testival Meetup July 9, 2019 — 1 min read We are a problem-solving-oriented company, whose strategic concentration is focused on creative problem solving and innovation. We believe if all departments approached quality with an open mind, success is possible if management led the quality improvement process. And it was time for us to organize a Quality assurance (QA) meetup to encourage the exchange of software quality assurance and testing knowledge. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 9, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 9, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q’s Clients in the US - Tech Consulting and Software Engineering URL: https://q.agency/blog/qs-clients-in-the-us/ Discover Q’s projects with leading US companies across recruitment, healthcare, travel, and technology. Q’s Clients in the US | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Q’s Clients in the US Q’s Clients in the US February 2, 2020 — 6 min read After we had positioned ourselves as a trusted vendor for leading European companies, we pushed forward to do the same in the US. In these few years, we have worked with Fortune 500 companies and startups in the US on various projects. We take special pride in the following projects. 1. ManPower Group We partnered up with ManPower Group on several dierent projects, the biggest one being the global assessment platform for their Assessment and Recruitment department. The platform enables companies to assess employees, determine their strengths and weaknesses, and create their unique profile. Assessment platform for the US largest staing & recruiting firm All candidates, from contractors to temporary positions, go through a series of assessments so that Manpower can validate them, and also give them directions & tips for professional development, as ManPower oers training services. Suppose a company engages ManPower to fill their 20 open positions; ManPower will assess potential candidates through our platform and match the company with the fitting candidates. 2. USPS When USPS started implementing Salesforce through the entire company, they needed a trusted external partner to help them out with this ambitious initiative. Q stepped in with our experienced team of backend engineers and additional related experts which helped guide the client through all stages of the project. Salesforce implementation for world’s most significant post-service More precisely, the Q team worked on a series of integrations between Salesforce and USPS systems. By the end, the key targets were met and the system is still being used actively by a large number of the USPS sta. The project was year-long, and our Java team collaborated on it with our Irish & US partners on this large scale product. 3. HomeExchange HomeExchange was one of the first projects on US soil by Q, and it was a big one. We created a dedicated team of developers and designers who helped grow their business once we took over the platform’s tech aspect. HomeExchange is a vacation alternative where you stay at someone’s home while they stay at yours, but not always simultaneously. Since they began 15 years ago, they grew to more than 65,000 home listings in 150 countries, won the USA Today award for the best travel website & became an industry leader. The whole production (Design & Development) was moved from freelancers to Q, and Q helped the client grow its business until the point the client did an “exit” for 34 million dollars. 4. eHealth Unicorn Telemedicine & eHealth have steadily grown over the past decade, but the pandemic escalated its adoption. Some companies are ahead of the pact and are pushing this change. Q works hand in hand with a New York-based eHealth company that disrupts the market and creates new ways of providing health services. Transforming the healthcare experience They serve in around 100+ countries and have served 25+ million members in 2019 with their Web & Mobile apps. The apps enable remote consultations with doctors, online scheduling of doctor’s appointments, and many more services in the eHealth domain. We have three agile teams working on dierent projects within the company, and most of them are focused on their core services. We work on both web and mobile development with our team of BAs, PMs, Engineers, Testers, and UX&UI Designers in close collaboration with NYC headquarters. 5. Beazer Homes Beazer Homes USA, Inc. is a home construction company based in Atlanta, Georgia. They are one of the largest homebuilders in the United States based on the number of homes developed, and they operate in 13 states. Q collaborated with them on the Mortgage Choice platform. Mortgage Choice platform to ease up the loan process The platform’s key functionality is to ease up home mortgages so homebuyers can easily connect with banks and get better rates. After the user registers and puts in the preferable loan options, he is oered dierent options by the bankers in his area. 6. Onboarding platforms for Fortune 500 companies Usually, onboarding of the new employee happens when they start working in the company – and they are handed a boring 50 pager PDF about processes, company culture, etc. We streamlined and gamified this boring process before starting to work for a company. Gamification of onboarding for world’s largest companies This way, all new employees go through a series of videos, games, and quizzes. They learn about their position, the company’s culture, and rules in a fun way. Users earn points, badges, and once they collect enough points, they are successfully on-boarded. 7. GENE-5 GENE-5 is Michigan based startup accelerator supporting the development & growth of cutting-edge startups relying on emerging technologies. Gene-5 & Q have formed an agile team that supports various projects that are developed simultaneously. The team comprises various experts covering: data science, front-end, back-end & mobile development. Resource allocation between projects is coordinated by the Agile Project Manager in close collaboration with the PO from the client’s side. Inventive Solution to Fight COVID-19 in bars & restaurants The most prominent solutions we delivered are Temp Protect & Guest Protect, the 360 solutions for customer and employee safety during the COVID-19 outbreak. The solution relies on integration with smart thermometers, which scan the visitors as they walk in and ensure that visitors’ body temperature is not above average. 8. Deeper Signals Deeper Signals is transforming the way organizations develop and deploy their talent. Their scalable and data-driven coaching tools are designed to inspire individuals, guide development, and empower leaders with the information necessary to build strong teams, fuel innovation, and drive performance. Innovative assessments and digital coaching platform The primary tool they use to do so is their Assessment platform, and Q’s team has the complete technical and design ownership of the platform. We started with the MVP, and then we built up the product from a simple assessment & candidate grading platform to an enterprise-level product. Our team built a robust product with which Deeper Signals can accomplish several tasks, including managing and billing their clients and customizing designs. 9. Thomas Net ThomasNet is developing hundreds of websites for its clients every year. To help them meet the ever-growing market demand, Q has developed an Oxygen framework/website builder with modules and templates to meet the demand. A content library for the modules and a WordPress framework for it. Unique solution for US leading sourcing platform and marketing powerhouse The Oxygen framework is the library of reusable components that can be used on multiple projects with minimal modifications, saving time, and money for the end clients. Every module is built using the Oxygen page builder added to the module library. The reasons behind using Oxygen for clients are much faster development if the designer uses modules; every new design is added to the library. It can be reused; the client’s turnover is much quicker as the presentational sites can be made in two weeks. Nikola Raguz Nikola is Key Account Manager at Q responsible for the US market. A liaison between clients and the company, working on connecting what the client needs with the company’s strategies and solutions. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 2, 2020 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 2, 2020 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Quality Assurance vs Quality Control: What’s the Difference? - Tech Consulting and Software Engineering URL: https://q.agency/blog/quality-assurance-vs-quality-control-whats-the-difference/ Quality Assurance vs Quality Control. What are the differences? Why are they both important? How do they work together? Let’s find out. Quality Assurance vs Quality Control: What’s the Difference? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Quality Assurance vs Quality Control: What’s the Difference? Quality Assurance vs Quality Control: What’s the Difference? February 28, 2025 — 7 min read Today, with users who get more and more demanding, you don’t even have to think twice about one ‘little’ one thing when building your app or other software product — it needs to be free of bugs and errors. Let alone crashes. So, obviously the quality of an app or service is an inevitable requirement. But in order for a software product to be flawless , a lot of work needs to be put into testing it. This is where one special team of experts steps in. And that’s why today, we’ll be talking about Quality Assurance vs Quality Control, a.k.a. QA vs QC. What are the differences? Why are they both important? How do they work together? Let’s find out. What is Software Testing & Quality Assurance? Software Testing First, let’s start with a thing called software testing. Software testing is a broad term that aims to find out and check whether the software — product or service — works as it should. Software testing is here so that through checks and analyses, potential errors can be found and be solved so that the end product can function as smoothly as possible. Below you can see the four main items that fall under software testing. From unit testing and integration testing, through system and acceptance settings. Unit Testing : Testing individual parts or components of the software. Integration Testing : Making sure different components work well together. System Testing : Verifying that the entire software system functions as expected. Acceptance Testing : Confirming that the software meets user requirements and is ready for release. To avoid confusion with QA, software testing is usually performed by developers or automation engineers. The idea is simply to make sure that your product is free from any errors, faults or bugs and ready for the end-user. It shouldn’t be so complicated, right? Well, QAs are here to make it all much easier, even if it is. Quality Assurance (QA) As far as Quality Assurance is concerned, it is responsible for establishing and implementing the set-up processes that will help the entire software development cycle run smoothly from the very beginning with as few potential errors or defects as possible. So, a proactive approach and prevention are what characterise QA. Here is what QA involves: Defining coding standards and best practices. Having regular process audits. Providing continuous training for the team. Continuously improving development practices to avoid mistakes. QA is the foundation in the development testing process. And it’s here to set up the right processes to prevent issues before they even arise. Quality Control (QC) vs Quality Assurance (QA) This is where things might get a bit confusing. Terms ‘QA’ and ‘QC’ are often used as synonyms, but this is not the case. Let’s have a closer look and see what QC stands for and involves as an area of expertise. Quality Control (QC) QC is in charge of the finished product — right before it gets into the hands of future users. Hence, QC is reactive . If there are existing errors in the product, a QC Engineer will fix these errors for the product to be fully ready before the public launch. Some of the main activities in QC are: Testing the software to catch bugs. Reviewing code to pinpoint potential weak spots. Conducting performance and usability tests to ensure the product works as intended. So, in brief, what is the main goal of QC? To inspect the product, find errors, and resolve any issue before the software goes live to the public. Quality Assurance (QA) Compared to QC, which takes a reactive approach, QA is proactive . In short, QA works with the development team to establish standards and guidelines right from the start that will ensure that the beginning of the development process has a well-trodden path. And in an ideal scenario, it will ensure that there will be no errors at all. These are very rare cases, but hey, you never know. Some of the main tasks QA Engineers do involve: Setting up guidelines and standards for the product development process Making audits of the product development process regularly. Giving regular training to boost skills of the team. Promoting ways for constant improvement. So, if QC is the one who finds errors in a product that’s finished, what does the QA do? They make sure that at the beginning or during the process, errors don’t appear at all. Quality Assurance vs Quality Control: Key Differences The Importance of Integrating Both QA & QC Is your product really ‘done’ when it’s ‘done’? By using the methods of both QA and QC experts, the result is a more efficient development process, and ultimately, a product that will be better for the end user. And the end user is the ‘target audience’ of this entire process and the one for whom we build the new product or service. As we mentioned above in the article, QC and QA have different roles at different stages of the development cycle. But why does integrating both of them matter and why is it important for the best possible delivery of the product? Let’s see how this integration works: Catching Problems Right off the Start The advantage of using Quality Assurance and Quality Control methods is that initial errors can be detected at the very beginning and reduce the chance that these errors, maybe only small, will become a big burden at the end of development. As the first line of defense, there is QA. So, at the beginning, it is the QA Engineer who can spot errors early on with his methods, while the QC Engineer is the one who tests the final end product at the end. Reducing Costs in the Long Run The cost of developing a product or service is probably the biggest pain point of any project. That is why the role of both the reactive QC and the proactive QA is extremely important. More precisely, the integration of both of these fields, so that any initial fault can be resolved by QA, and for it to not become a large, costly problem in the final phase that would wait for QC to try to solve it. Gaining Trust with Users Glitch? Crash? Problems with performance? Forget about it, modern-day users of any app or other software would say. This is why the integration of both QAs and QCs is important as it delivers a more successful product. Which in turn has users, customers feel they can trust you as the company who made the app. This can only result in them gaining trust towards you and the app and continuing using it in the future as well. Encouraging a Culture of Quality Quality, of course, is the main goal when making any software. This is another example why the integration of both QA and QC brings more value and quality. Why? Because QA makes sure that ongoing processes are constantly improved, and QC is in charge of the final product and that it meets user expectations. After all, users are the ones the software is made for. All in all, both roles are vital from a testing point of view during the development cycle. And they both help build a high-quality and reliable end product. Conclusion To sum it all up, the difference between software testing, QA and QC comes down to the focus and approach of each of these three areas of expertise. While software testing incorporates a broad set of tasks mainly developers and automation engineers do, Quality Assurance takes a proactive approach and makes sure to establish processes that will prevent errors during the development process. On the other hand, Quality Control, with its reactive approach, steps in at the end of the process, and does audits and testing the final product before it is launched and released to users. With each of these methods involved in the development process, the chance of having the end result in the form of a reliable and bug-free software is increased multifold. Feel free to reach out if you’re in search of experts who can help you build a strong QA and QC strategy. Our team knows how to ensure the quality of your product at every step. Let’s talk! ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 28, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 28, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Quinnipiac University visit - Tech Consulting and Software Engineering URL: https://q.agency/blog/quinnipiac-university-visit/ Q hosted MBA students from Quinnipiac University in Zagreb for a business workshop exploring IT challenges, market approaches, client acquisition, and Q’s international growth. Quinnipiac University visit | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Quinnipiac University visit Quinnipiac University visit March 21, 2019 — 2 min read A group of MBA students from Quinnipiac University visited us in our new Zagreb oice! We talked about dierent market approaches and discussed what challenges IT companies face in the US market. Quinnipiac University, more precisely their MBA program, is ranked #3 in the United States by The Princeton Review. Their MBA students are on a tour to visit some of the leading Central European companies, and of course, Q was on a list. 🙂 Our experts held a business workshop with students where they discussed the business model of the company and the challenges they face in dierent markets, the way of acquiring clients, and various projects from our portfolio. More than 98% of the students in this university, just 6 months after graduation, start their own business or engage in companies such as “PwC”, “Morgan Stanley” or “Unilever”, so it’s not surprising that they had an interest in Q’s business model, which since its founding has grown 250 times or 25,000 percent. The students were delighted with the workshop as well as our new oice. “American MBA students are the world’s business crime. It is a team that follows world trends, which is highly educated, always focused on what is important, and has 1001 ideas. This was seen yesterday in workshops which was really great and concrete. Both sides have learned so much.“ said Filip Ljubic, our CEO. In the United States, Q operates through Los Angeles and New York oices and has successfully completed projects for leading US companies such as Coca-Cola, Facebook, Walmart, or United States Postal Services and we are currently negotiating with two US companies on an exclusive partnership. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 21, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 21, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Ready…Set…Go! - Tech Consulting and Software Engineering URL: https://q.agency/blog/ready-set-go/ Discover why go-kart racing is the ultimate team building activity, bringing QA teams together through friendly competition and fun. Ready…Set…Go! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Ready…Set…Go! Ready…Set…Go! February 15, 2019 — 1 min read QA Team took teambuilding to the new level! Every business has lots of choices on how they promote team unity in their company, and we think go-kart racing is the best way to do it. There’s no risk of someone not participating or being bored, everyone wants to get a chance to beat their boss’s best time. Incorporate go-kart racing, there is no pecking order and no oice politics. There are only the rules of the track — fastest across the line wins, no matter their position, title or pay bracket. It’s the ultimate level playing field, and it’s sure to bring the entire team together in friendly competition. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 15, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 15, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Most Beautiful Christmas City in Europe - Tech Consulting and Software Engineering URL: https://q.agency/blog/ready-set-zagreb-advent/ Discover why Zagreb was voted Europe’s best Christmas market three times, with festive events, ice skating, concerts, and seasonal treats. Most Beautiful Christmas City in Europe | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Most Beautiful Christmas City in Europe Most Beautiful Christmas City in Europe December 10, 2019 — 3 min read It’s the merriest time of the year and there are so many Christmas things to do in Zagreb to put on your list of festivities that would certainly get you in the Christmas spirit. Whether you channel your inner grinch or cheery elf during Zagreb’s most wonderful season, we’ve got you covered with activities. Number One Zagreb was voted the best Christmas market in Europe by European Best Destinations’ online poll three times in a row and awarded as the most beautifully decorated city. It has beaten o the likes of London, Vienna, Berlin, Stockholm, Strasbourg, Manchester, Brussels, and Nürnberg. Are you wondering why? The award-winning market oers a variety of events that will satisfy even the most demanding visitors. Unique events, ice skating, live concerts, the sound of Christmas bells, the scent of gingerbread, mulled wine and various other delicacies make you forget everything else and enjoy all these wonderful things! Still not convinced? Then scroll down and see what Zagreb has to oer: You better watch out, you better not cry… Each edition of Advent in Zagreb brings some news, and this year is no exception. So 2019 has two main themes — Nutcrackers and Croatian Heritage, so there will be lots of nutcrackers sculptures set up throughout the city. You better not pout, I’m telling you why… On an opening day, the traditional lighting ceremony took place at the Zrinjevac park, and on the same day, the largest outdoor skating rink in this part of Europe opened in Tomislav square. The rink oers a large open skating space as well as a maze of dierent passageways to suit the needs of any skater. It has proven to be one of Advent in Zagreb’s most popular attractions. Santa Clause is comin’ to town! Gotta catch ‘em all! Father Christmas will be visiting and adding that extra bit of magic… Try to count every Santa you meet along the way, you will be surprised how many of them you’ll see. If you were good, don’t worry, those encounters won’t be awkward. 🙂 Many, many events folks! A special gastronomic oer under the name Apetitlih is being prepared at Zrinjevac park. The concept, created in collaboration with the Gourmet Experience Croatia project, will introduce more than 20 traditional dishes. Some stories never get old The crib, the stall, the citizens of Bethlehem, the domestic animals, and the shepherds will take you at the time of Jesus’ birth and give this Advent a special atmosphere. Classical music on balconies From the most beautiful balconies in Zagreb, tunes performed by a brass band blower, bringing holiday joy to the colorful city streets. For those that enjoy nodding head along with the bass, there are plenty of other genres such as house, techno, R’n’B or even acoustic live gigs There are so many more events and happenings, so hurry up and pack your bags! Advent Map will help you plan and navigate through the merriest time of year leading up to New Year’s Eve. More information and details of individual programs you can find on the Zagreb Advent web-site. Have fun and enjoy the fairytale! Sara Madjer She has a diploma in Finance and Law and MBA in HR Management, which combined with her listening skills makes her a perfect fit for the People & Culture department. She is one of the oldest and most influential employees who grew together with Q. Sara also has her own show ”Coffe with Sara“ (Kavica sa Sarom). GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 10, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 10, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Real-Time Data Ingestion and Analytics with Azure and .NET - Tech Consulting and Software Engineering URL: https://q.agency/blog/real-time-data-ingestion-and-analytics-with-azure-and-net/ Learn how Azure, Azure Data Explorer and .NET support real-time data ingestion, telemetry pipelines and low-latency analytics. Real-Time Data Ingestion and Analytics with Azure and .NET | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Real-Time Data Ingestion and Analytics with Azure and .NET Real-Time Data Ingestion and Analytics with Azure and .NET July 19, 2026 — 6 min read The article explores the challenges of managing continuous data flows from a multitude of devices and outlines a basic architectural overview for building telemetry pipelines. It highlights how combining the Azure ecosystem, Azure Data Explorer, and .NET enables efficient data collection, real-time data ingestion across various protocols, and the transformation of data into actionable intelligence with ultra-low latency. In a hyper-connected world, data is constantly flowing from billions of devices, probably even your toaster. There is a significant challenge not just in capturing this data, but also aggregating it across various protocols, processing it in real time, and storing it for meaningful analysis. This article will show how to use Azure and .NET for this purpose. Azure ecosystem Azure provides a structured and enterprise-grade architecture to ingest, route, and process high-volume, continuous telemetry streams (logs, metrics, and IoT). Azure IoT is a collection of services for connecting, managing, and deriving intelligence from IoT devices and industrial equipment at scale. Azure IoT support the following protocols: Modbus (RTU/TCP) – Azure IoT supports Modbus through custom IoT Edge modules, which can act as protocol converters M-Bus (Meter-Bus) – M-Bus communication can be enabled through IoT Edge by using protocol adapters or creating custom modules that communicate with M-Bus meters. TCP/IP – Native support for TCP/IP communications is integrated into Azure IoT solutions. BACnet (IP-based) – Azure IoT can integrate with BACnet devices via gateways that convert BACnet/IP to a compatible protocol for Azure, such as MQTT or HTTP. IoT Edge can also be used to manage these interactions. LoRa – Azure IoT Hub supports LoRaWAN via integrations with external network servers like The Things Network (TTN) or by using LoRaWAN-compatible IoT Edge modules that convert LoRa data for cloud ingestion. RX/TX meters – Using IoT Edge or custom hardware, data can be captured and forwarded to Azure IoT Hub using supported protocols like MQTT, AMQP, or HTTP. From all those devices and protocols flows data to the ingestion layer. It’s a layer where data is collected from multiple sources and transported into a central storage system for processing and analysis. Azure provides a suite of specialized ingestion tools: Azure IoT Hub – Enables highly secure, bidirectional (two-way) communication with millions of connected devices. Natively speaks standard IoT protocols including MQTT, AMQP, and HTTPS. Azure Event Hubs – A massive data-streaming pipeline which acts as a pure, high-throughput data scraper designed to ingest millions of events per second. Azure Event Grid – The reactive traffic controller used for discrete, event-driven routing based on specific triggers Telemetry is only valuable if you can act on it immediately, so there needs to be an analytics layer. Azure Data Explorer (ADX) is a fast, fully managed big data analytics service optimized for real-time, time-series analysis. If the ingestion layer acts as the plumbing that transports your data, ADX is the powerful engine at the end of the pipeline that processes it. To balance performance and speed, ADX offers two distinct ingestion methods: Batched Ingestion – Optimizes the traffic and reduces costs by grouping incoming data and processing it every few minutes. Streaming Ingestion – Designed for ultra-low latency, making data searchable within seconds of leaving the device. ADX uses Kusto Query Language (KQL), a language specifically designed for time-series exploration. While it organizes data into a familiar SQL-like hierarchy of databases, tables, and columns, KQL is vastly easier to read, write, and understand. Instead of writing complex, nested SQL joins just to parse a string, KQL provides native operators for text search, time-series data, and statistical modeling. KQL query looks like this : A practical example Consider a scenario where you are building an API using .NET with the requirement to consume data from Azure Data Explorer. In that case, within your application’s repository layer, you would need to implement something like this : As seen in the implementation, interfacing with the ADX cluster requires the Microsoft.Azure.Kusto.Data client package. You must also provide the specific URI for the ADX cluster, which follows a structured endpoint format. The following components constitute the structural breakdown of the endpoint: cluster-name – The unique name assigned to your cluster instance. azure-region – The specific Azure region where the resource is provisioned. kusto.windows.net – The standard domain for ADX/Kusto communication. A critical detail to emphasise is the authentication flow. Security is handled via Microsoft Entra (formerly AAD), with the mechanism typically pivoting based on the environment: WithAadSystemManagedIdentity() – The application leverages its own managed identity, eliminating the risk of credential leakage or the need for secret rotation. WithAadAzCliAuthentication() – Used in local development by silently inheriting the developer’s active Azure CLI session. WithAadUserPromptAuthentication() – Triggers an interactive browser-based login when explicit user verification is required. Once the connection is established, ADX can be queried. A nice touch is to use pre-defined KQL functions on the cluster, and the API just calls them with parameters if needed. We can rewrite are previous KQL query into the function to illustrate this approach : This function can be called from .NET application : This call also sends request metadata to ADX in the form of ClientRequestProperties object. ClientRequestId gives the request a unique ID so it can be traced in ADX , and Application tags which app issued it. A fresh GUID is generated per call, so each query is individually identifiable. _queryProvider!.ExecuteQueryAsync(…) runs the query. Also important is the argument “adx-database” which is the target database on the cluster, since there can be numerous databases, based on the environment (dev, test, production). Once the data is received you can process it and store to the collection : From there, you can process the data additionally before it is served to the user in API response. Conclusion So this is the basic overview of how to architect a pipeline for receiving and managing telemetry data. By leveraging Azure ecosystem alongside the analytical capabilities of Azure Data Explorer and the versatility of .NET, the complexities of modern data streams can be effectively handled. This integrated approach ensures that data is not only collected efficiently but is also transformed into actionable intelligence with ultra-low latency. Tomislav Bali Tomislav is our Engineering Lead specialised in .NET development. In his free time, he is a history buff who loves exploring the world on two wheels or on foot. He is equally passionate about his quest for the perfect pancake or croissant. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 19, 2026 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 19, 2026 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Remote Work Setup — How to Build High-Performing Client-Agency Teams Anywhere - Tech Consulting and Software Engineering URL: https://q.agency/blog/remote-work-setup-high-performing-teams/ In this blog post, learn more about remote work setup and how to build high-performing client-agency teams anywhere. Remote Work Setup — How to Build High-Performing Client-Agency Teams Anywhere | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Remote Work Setup — How to Build High-Performing Client-Agency Teams Anywhere Remote Work Setup — How to Build High-Performing Client-Agency Teams Anywhere October 30, 2025 — 8 min read Remote work setup isn’t a trend, it’s a way how clients and agencies build great products together and create their own rules of collaboration. Both remote and hybrid ways of working have changed, and integrating teams across different time zones, cultures and companies has become completely natural. Remote work allows agencies and clients to bring together the best people for their projects from all around the world. Those teams are formed around skills and shared goals. Teams that are managed in the right way can enable everyone to contribute to the overall outcomes. Remote work didn’t just change where people work, it completely redefined what it means to be a team . It also redefined how they spend their free time and balance their personal lives with the professional ones. What makes remote teams setup successful when people are often located in different parts of the world and different time zones? Teams Diversity as a Key Driver In the traditional teamwork, people were sitting in an office working together. But today many teams are distributed. Developers are in one country, and designers and BAs are in the other one. They don’t even need to be in the same continent to successfully collaborate together. For agencies it is no longer a condition to have their people in the same city let alone the same office every day. They are able to create value regardless of where their people sit , because they rely on accountability, trust, and transparency. Instead of measuring teamwork by hours spent together, it is measured based on achieved progress. Augmented teams, where agency experts work directly with client teams , have become a model that many agencies offer as their way of doing the business. Their biggest advantage of this model is team diversity which is possible because people come from anywhere in the world. Combining knowledge and mindset of people coming from different cultures is a great benefit for both clients and agencies. Diversity isn’t a challenge, it’s a source of creativeness. But diversity alone isn’t enough, when it’s combined with the freedom of remote work, then everyone gets the benefit. Advantages of Working Remotely Remote work brings many benefits, such as flexibility and different focus areas . Productivity in remote teams often improves, since people spend less time commuting and more time doing the actual work. For some roles, like designers and engineers, remote work set up offers longer focus times, which is important when doing the creative work or fixing the issues. The biggest advantage of remote work is the ability to balance every day life, regardless if it’s part of a professional or personal area. People can organise their lives in a way to finish the tasks when they have the highest focus and are most productive. For agencies and clients, that approach means higher engagement and better results . Since remote collaboration also has some downsides , one of the things the teams need to learn how to overcome together is the distance. Distance as a Challenge Remote work gives freedom, but it also creates physical and emotional distance . Even though working remotely is becoming the first choice for many agency experts, there are also some challenges that agencies are aware of. Quick conversations during morning coffee or running into someone in the hallway and having a 5 minutes sync doesn’t happen, so agencies who are able to acknowledge these gaps and find ways to handle them quickly stand out as trusted partners. It’s not about pretending the challenges don’t exist, it’s about setting up remote work around them so that client-agency relationship brings benefits to both sides. The best remote teams have virtual office hours, time and space for feedback, and regular team retrospectives . When everyone feels heard, the distance doesn’t play a crucial role any more. Another way to keep connections between people alive is by having regular on-site gatherings, team buildings or occasional workshops when everyone comes to the office. These in-person moments create and strengthen trust not just between people, but between client and agency, creating opportunities for future projects. So how do teams stay aligned, connected and productive despite the distance? The Tools That Make Remote Work — Work There is no collaboration without tools, such as Slack, Miro, and Figma . But tools alone are not enough for collaboration. Agencies use shared practices, such as documenting conversations and presenting them back to the client to be able to visualise progress and align about milestones and next steps. Agencies that are excellent in doing this can offer best skills regardless of where their people actually sit and work. Great agencies intentionally choose tools which make work visible. Still, remote collaboration isn’t just about the tools, it’s about creating habits, trust and a shared way of working . Technology may connect people, but culture keeps them together and successful teams work to keep both in sync. Culture in Remote Teams The reason why remote teams that achieve excellent results don’t just deliver work, they create relationships. When people know each other as individuals, they start trusting and looking at each other beyond the work they perform every day. Remote culture is built on shared respect, empathy, and humor that happens in small talks even though people are on screens. Even the strongest culture needs direction and that’s where leadership comes into play to lead and hold remote teams together. The Role of Leadership in Remote Team Setup Remote leadership isn’t about control, it’s about clarity and empowerment . Agency leaders give people freedom to organise their day, while ensuring alignment with the client. Regular one-on-one replaces micromanagement , and people are free to share their achievements and concerns, and to ask for help if needed. This leadership style doesn’t just deliver outcomes, it attracts motivated and independent professionals. Remote leaders ensure that no one feels left out and that people’s growth is a must, no matter where they are physically located. They lead by example, showing that empathy, ownership and integrity are the most important characteristics they need for quality leadership. Leaders who understand both agency’s and the client’s contexts can manage expectations and ensure the partnership remains focused on outcomes . What does remote work setup really look like in practice? Q as a Remote-First Company Remote work at Q isn’t a temporary setup , it’s part of who we are. Q is a remote-first company, attracting people from all over the country. People don’t need to live in a particular city or come every day to the office to be able to do their job professionally and with dedication. Q is focused on hiring the right people to do the right job regardless of where they actually are . Even though we are very far away from clients, we work in collaboration and join different ceremonies and informal coffee meetings. Being remote means we need to use cameras, because seeing each other helps us build trust and connection. Over time, those virtual meetings start to feel just as natural as working side by side. The role of Q’s Experts Q experts who are tasked to do research or analysis often present their findings and proposed solutions directly to client stakeholders regardless if they are their direct leads, delivery or engineering heads or members of the leadership team. These sessions are not just about presenting the work, they are opportunities for Q to show that, even if we are not physically there, we can make an impact on different levels and we have knowledge and skillset that drives the agency-client relationship . Since Q experts and client employees are located in different places, the human side of this partnership becomes very important. Everyone gets reminded every day that behind every screen is a real person with real character and humour. Being a remote first company doesn’t just benefit clients, it benefits Q’s people too. We find the opportunity to work from anywhere a huge benefit. We can manage our families easier, have more time for personal tasks such as picking kids from school or going to the gym. Being flexible is the biggest advantage and that’s the reason why some put Q in the first place on their list of preferred agency choices. Dedication, responsibility and professionalism is valued and respected in Q, so people who get to organise their lives the way that suits them, achieve better results and are more successful. At Q, distance doesn’t mean disconnection. It’s just space between people and we at Q learned how to make it work in the best possible way. Conclusion For many agencies the remote-first model isn’t just a work setup, it’s a lifestyle choice for their people that allows them to coordinate their professional and personal lives in a better way . The hours they previously spent commuting now are used for exercising, cooking, learning, taking care of their kids or simply slowing down. It improves the quality of lives of their employees , which further has an impact on the approach they take when working with clients. For an agency, having a remote work setup is a competitive advantage. When collaboration is built on trust, transparency, and shared goals, distance doesn’t impact the potential of team delivery. At the end of the day the most successful teams aren’t defined by where they work. They’re defined by how well they work together. Irena Cvetic Irena is our Engineering Lead with years of experience in the BA area who likes exploring and learning new things through every day work and communication with others. In her free time she enjoys reading different kinds of books, listening to the latest music hits and drinking good coffee. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 30, 2025 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 30, 2025 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Requirement Workshop - What You Need to Know - Tech Consulting and Software Engineering URL: https://q.agency/blog/requirement-workshop-what-you-need-to-know/ Explore practical ways to prepare for the requirement workshop when working as a business analyst. Requirement Workshop - What You Need to Know | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Requirement Workshop – What You Need to Know Requirement Workshop – What You Need to Know October 31, 2022 — 7 min read In the real world, nothing is ideal, and we do not always have time to prepare for requirement workshops. However, when we do, it helps to create a structure and set clear goals and ideas of what we want to achieve. This preparation can also give us more confidence during the workshop, knowing what deliverables are remaining and giving us a guide on how to proceed. In the following sections, we’ll cover practical ways to prepare for workshops, including: Studying the basic information about the company, stakeholders, and the project Researching the current state , solution , and competition Studying the materials received from the client Exploring similar solutions , external factors, laws, or anything else that can affect the project Writing down and organizing all the questions into topics Preparing workshop summary template in advance Homework, what homework? You are usually assigned to a project when you’re working as an IT business analyst, especially in agile environments. Your task, most often, is to hold requirement workshops to determine business needs and help set the project’s scope. But before jumping in and defining the business needs, you should always know the basic information about the client’s company, stakeholders, and project first, or in other words, do your homework. When you have a good understanding of companies’ values and the motivation behind the project , you’ll be able to easily manage requirements and have valid arguments about why you think some requirements are necessary or not. On the mind map below, you can find questions you can try and answer as a part of the basic preparation. Not every question can be answered beforehand; some of them you will need to ask during the workshop, but they are a good starting point. Image 1. Questions used to determine basic information before the workshop Write your findings down using a bulleted list, mind map, or, even better, some online collaborative tool such as the Miro board . These online whiteboards are usually simple and flexible, and they let you easily organize, categorize and label the information you gathered. You can also share it with your team as needed. The image below shows an example of how the Miro board can be used for this purpose. Image 2. Example of using Miro board for writing down basic information Regarding the stakeholder category mentioned in the mind map (Image 1), writing this down can get tricky if many people are involved in the project, resulting in responsibilities not being clearly defined. If that is the case, try using the RACI matrix , which is a way of organizing responsibilities for each role. You can find more information and examples regarding the RACI matrix online, if needed. What about the research? Once you know the basics, you can finally get to the fun part – the requirements. The first step is to assess the current state, and here are some questions to ask to help you do so: Is there any documentation available? Are there any laws or external factors that might affect the project? What is the current business process? Is there a prototype or an existing design? Does the application or some other solution already exist? If you have materials from the client, go through them thoroughly and write down questions . A good strategy is to sketch out the business process flow diagram if you have enough data for it and if the client does not provide it. You might think you understand the process, but when you start to decompose it, you will probably realize that there are some gaps. Once you go through the materials provided by the client, and if you have time, you can research the competition and similar solutions to gain valuable insights and ideas on how to build a better product and avoid potential mistakes. Also, if some laws or external factors affect the project, it is always a good idea to get familiar with those at a high level. If you don’t have materials from the client, you will need to be more creative, but you can still successfully prepare for the workshop. For example, suppose the project’s outcome will be to build a mobile application. In that case, you can study the competition, install their apps, read the user reviews and identify the shortcomings or pain points of those apps for the users to make sure to avoid those in the application you will help build. Prepare questions & topics Now that you have all your questions, it is time to o rganize them into topics/epics you will discuss during the requirement workshop. If you have any materials that will help guide the discussion, include them and present them to the client; this can be screenshots of the current solution, diagrams, user flows, wireframes, etc. An example of how the Miro board can be utilized for this purpose is shown in the image below. In this example, we have three epics – Registration, Ordering, and Contact. Each epic has questions or materials that need to be answered/confirmed during the workshop. For instance, there is a flow diagram in the Ordering epic that can be discussed and confirmed with the client; in the Contact epic, there were some recognized issues with the contact form, so the wireframe is attached as a possible improvement suggestion. Image 3. Example of using Miro board for workshop preparation This part can be done with many other tools as well; for example, at the beginning of my career, I even used Microsoft Excel to write down and categorize all the questions and their answers. The most important thing as a BA is t hat you are familiar with the topics, the questions are clear, and you can easily lead the client through them during the workshop. However, collaboration tools will always have far more benefits, and I recommend you use such tools whenever possible. For instance, you usually have many internal and external stakeholders in the requirement workshops, so why not utilize them and let them collaborate by adding notes and answers on the whiteboard during the discussion? This way, they will actively participate in the workshop (and won’t be bored), and you will get much-needed help because you are leading the workshop and having discussions, so you don’t always have time to write all the answers down simultaneously. It’s called requirement elicitation, not gathering! Business needs should always be questioned by a business analyst and never blindly gathered. Instead, you should know why some requirement is needed and how it fits into the big picture and use the workshop to distill actual business needs from wishes . That is why this process is called requirement elicitation and not gathering, and here is where that good preparation beforehand comes into play. Another thing you can do as a part of the workshop preparation is to set up a workshop summary template. Once the workshop is done, it is always a good idea to send a workshop summary with key conclusions to all the stakeholders to avoid misunderstandings later on. Information that I usually include in this document are: Name of the project Date of the workshop Purpose of the workshop Participants, their roles, and company Topics & Conclusions Next steps (Activity, Responsible person & Deadline) Attachments Image 4. Example of populated workshop summary template Keep in mind that, in practice, not all the stakeholders communicate with each other, and if some are absent from the workshop, they might disagree with what was discussed. Also, you might think everything is going well and that you and all the stakeholders have an understanding, but when you send the summary, some points might get reopened. Conclusion Good preparation will give you enough confidence to lead the workshop in a structured manner while keeping in mind the goal you want to achieve. When prepared, you’ll have a firm grip over requirements because you will understand the whys behind each one. You will also be able to keep the discussion on track resulting in clients getting the solution they actually need rather than want. And to top it all off, I will leave you with this quote by Bernard Kelvin Clive that perfectly sums up what usually happens whenever we overlook good preparation: “If you don’t prepare, you will repair.” Mateja Kardasic Mateja is a Business Analyst at Q agency. Before becoming a BA, she was both a developer and tester, which allows her to understand every problem from multiple perspectives. She is driven by her need for continual improvement and a desire to work on building digital products that make a difference. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 31, 2022 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 31, 2022 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Revolutionary 3D medical app - Tech Consulting and Software Engineering URL: https://q.agency/blog/revolutionary-3d-medical-app/ Discover how we partnered with Medi to develop an innovative 3D body scanning app that enables faster, more accurate measurements for medical aids. Revolutionary 3D medical app | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Revolutionary 3D medical app Revolutionary 3D medical app December 8, 2019 — 3 min read One of the world’s leading manufacturers of medical aids, Medi, has recognized us as its partner and associate in the development of the latest technology. The application uses a special camera for the most accurate 3D measurement of body parts. We were selected by a German company Medi with more than 2,700 employees worldwide, one of the leading manufacturers of medical aids , who was looking for a partner that could turn their vision into reality, to go one step further. Medi’s primary mission is to raise the quality of life, and through its hundreds of years of experience, successfully develops aids used by thousands of patients. However, they decided to oer something innovative to their customers. Collaboration with Medi takes place on several levels, from strategy planning, development, and design. The innovative solution and the entire process is performed automatically through a single interface. The most attractive part, of course, is scanning the selected body part and creating a precise 3D model that can be rotated by the user in an interactive virtual space on the iPad. Load YouTube video This video is hosted by YouTube. Loading it lets them set cookies on your device. Load YouTube video This video is hosted by YouTube. Loading it lets them set cookies on your device. ‘Technology has facilitated daily human activities and improved life in many areas. Any such innovation is actually a major step forward, especially in medicine. The solution we developed for Medi will greatly facilitate the selection of medical supplies. It’s a step further because it automatically sends and processes the resulting measures in a webshop to recommend the sizes and characteristics of medical devices that will be completely customized for each user individually.’ – explains our CEO Filip Ljubic. So far in terms of using the latest technologies, we stepped into the field of medical supplies that have been neglected. Faster and more accurate measurements allow them to move completely away from the pen-and-paper method. In addition, this application oers many options for the user. Various specifications can be selected such as shapes, colors, grip intensity, and other features of accessories like various dentures, corsets, supports, compression socks, bandages… The app is already being used in German pharmacies and specialty stores, and will soon be available in other Medi-operated markets across Europe, as well as in the US, Canada, Brazil, China, Russia, and Australia, which is a large number of patients who will benefit from this innovation in selecting the right aids and thus recovering as quickly as possible. ‘Speed, precision, and innovation are certainly three words that can describe this application. Medi is a company that wants to provide advanced service to be ahead of our time. We are proud to have a part in this worldwide project.’ – said our CEO Filip Ljubic. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 8, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 8, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How Rhythm and Beat Maintain Application Testing - Tech Consulting and Software Engineering URL: https://q.agency/blog/rhythm-and-beat-maintain-application-testing/ Find out how consistent rhythm and beat make it easier to prove software functionality and meet user requirements. How Rhythm and Beat Maintain Application Testing | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How Rhythm and Beat Maintain Application Testing How Rhythm and Beat Maintain Application Testing July 28, 2023 — 6 min read Music relies on rhythm and beats for flow and structure. The same principle applies to application testing. A consistent rhythm and beat make it easier to prove software functionality and meet user requirements. Test timing and execution play a crucial role in ensuring the accuracy and reliability of results. The rhythm and beat of the testing process are key factors in application testing. It involves the method and timing of executing tests for reliable and accurate results, and maintaining consistency is crucial for proper software functionality. What is the definition of Rhythm? In an architecture group, rhythm refers to the predictable flow of work products between the group, customers, and suppliers . There are three aspects of rhythm: tempo, content, and quality . Like in music, a successful rhythm in architecture involves coordinated and intricate activities with minimal communication and coordination effort. If the tempo, content, or quality are inadequate, the benefits of rhythm will not materialize and progress will be hindered. So, let’s try to see what those things are ? and their advantages: Tempo Tempo refers to the frequency of the same type of transfer between groups , such as the architecture team and product development engineers. Predictable timing of handoffs makes transitions easier to manage. Organizations may have varying intervals for major releases, minor releases, and bug fixes, such as daily builds and smoke tests. Content Content refers to the transfer of value from one group to another . For example, a group developing a new or modified feature to meet the needs of another group, or moving completed builds from development to testing. Each iteration builds upon the previous one, adding value with each transfer, but if there is no consistent tempo, the timing of handoffs becomes irregular and rhythm is lacking, making it difficult for participants to anticipate when transfers will occur. Quality Quality refers to the following processes to guarantee a deficiency-free architecture . Some organizations may sacrifice quality to maintain tempo, such as reducing testing or altering handoff requirements. While speeding up the tempo by cutting unimportant steps is possible, truncating essential processes will cause rhythm to deteriorate. Testing rhythms and best practices: what do they mean? Creating a testing schedule that specifies the types of testing and their timing, rhythm and beat can be established in application testing. To ensure all necessary tests are performed and any problems are identified and resolved promptly, the schedule should include testing types such as unit testing, module testing, and performance testing. Another approach to establishing a consistent rhythm and beat in application testing is by using automation . Automated testing enables quick and efficient completion of repetitive tasks, leaving time for more intricate testing. Automation also guarantees consistent testing, crucial for identifying potential problems Keeping a consistent rhythm and beat also involves testing at appropriate intervals. For instance, if the application receives frequent updates, frequent testing may be necessary to verify its proper functioning after each update. Conversely, infrequent updates may require less frequent testing . In addition to maintaining a consistent rhythm and beat, it is also important to ensure that your tests are run on a variety of different devices and platforms. This helps to ensure that your application is compatible with a wide range of different devices and operating systems and that it is functioning properly on all of them. Key benefits of consistent testing One of the key benefits of maintaining a consistent rhythm and beat is that it helps to eliminate any potential errors or inconsistencies in your testing process. For example, if you run your tests at different times of the day, or on different days of the week, you may end up with inconsistent results. This can be especially problematic if you are running automated tests, as even small variations in timing can result in false positives or false negatives. Increased efficiency : By having a set testing schedule, teams can carry out testing efficiently and consistently, reducing the chances of delays and improving overall efficiency. For example, if you are working on two projects, you need to have a plan and you need to agree with your Project Managers when you will test on one project, and when on another. It is not good to switch every “5 minutes” , like a bee. Quality of your test will not be acceptable. Improved quality : Improved quality can be achieved by conducting regular tests to find and fix bugs and defects at an early stage of the development process. You can do that by constantly searching for errors, trying to do the impossible. Better communication : A consistent testing schedule can help to facilitate better communication between different teams and stakeholders, such as developers, testers, and project managers. Talk to each other, ask whatever you want. Increased coverage : Regular testing can increase overall coverage and reduce missed bugs by thoroughly testing all features and functionality of an application. Every build you need to do regression testing and you will increased coverage. Predictable release : Having a set testing rhythm leads to a more predictable release schedule, enabling teams to plan and be ready for upcoming releases. In software testing, however, consistency is key. Test, test, test ? One, two, three ? It enhances the completeness of testing, speeds up the detection of issues, keeps the testing on track, leading to timely software launch. Furthermore, it promotes team communication and collaboration by informing team members of testing schedules and feedback on their work. AND It’s also important to have a clear beat in your testing by setting clear objectives, goals, and testing metrics. This will help you to understand what you’re trying to accomplish with your testing and to measure the effectiveness of your testing. This can also be used to evaluate the progress of your testing and measure the performance of your software. Conclusion In summary, having a steady rhythm and pace is crucial for ensuring the success of software testing and delivering a functional application. Consistency in testing helps avoid errors and guarantees comprehensive coverage. By adhering to these guidelines, by following these best practices, you can guarantee a smooth testing process and provide users with the best possible experience. Lucija Drobac Lucija is a Quality Assurance Team Lead that raises software quality with her skills and various testing techniques. She holds her team like a drop of water in the palm of her hand. When Lucija is not testing and supporting her team, she runs through the woods, learns how to play guitar or sits back and reads a good book. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 28, 2023 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 28, 2023 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Ruby ZG May Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/ruby-zg-may-meetup/ Q hosted a major Ruby meetup featuring talks on custom RuboCop cops and scaling Rails monoliths as teams grow. Ruby ZG May Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Ruby ZG May Meetup Ruby ZG May Meetup May 24, 2019 — 1 min read In collaboration with the guys from the Ruby community, we held one of the biggest Ruby meetups yet and we couldn’t be happier about it. Our first talk was from Martin Morava and he explained how to write a custom made RubocopCop and talked about covering everything from writing a cop, implementing autocorrect functionality, and writing a spec for the cop. After the short break, Craig Plummer from the Smart Pension took the stage and his talk was mostly about how to scale your Rails monolith as your team grows, like the challenges you might experience and the techniques to overcome them. We are very glad this meetup was a success and truly hope you enjoyed spending time here at Q. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 24, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 24, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Saudi Arabia is a Major Player in Digital Transformation - Here is Why - Tech Consulting and Software Engineering URL: https://q.agency/blog/saudi-arabia-digital-transformation/ Saudi Arabia is going through an unprecedented growth in terms of digital transformation. It's leading in connectivity and tech adoption. Saudi Arabia is a Major Player in Digital Transformation - Here is Why | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Saudi Arabia is a Major Player in Digital Transformation – Here is Why Saudi Arabia is a Major Player in Digital Transformation – Here is Why October 17, 2025 — 3 min read Saudi Arabia is currently going through an unprecedented growth in terms of digital transformation. It is one of the leading countries in the world in terms of connectivity, technology adoption and investment in data infrastructure. How are Saudi companies navigating this new business landscape? In Saudi Arabia, the Future is Now. Connectivity and Technology Adoption When it comes to connectivity and technology adoption, Saudi Arabia is one of the world’s leading countries: Source: Datareportal Artificial Intelligence The AI market in Saudi Arabia: Valued at US$ 3.11 billion in 2023. The software segment led the market, with a 35.9% of revenue share in 2023. Projected to grow at a compound annual growth rate of 42.6% between 2024-2030. Revenue forecast for 2030: US$ 38.88 billion Source: Grand View Research Saudi Arabia is on its Way to Emerge as a Global Data Center Hub The AI market in Saudi Arabia: By 2030, US$ 15 billion are expected to be invested in data centers. A regulatory framework is in place, enabling data center growth. Lower energy cost (30-50% lower compared to the global average) improves data center operators’ profitability. Source: Roland Berger A Surge in Demand for Software Solutions in Saudi Arabia As Saudi businesses increasingly embrace digital transformation, the demand for skilled software developers is soaring. The Saudi Arabia custom software development market generated a US$ 638 million revenue in 2023 and is projected to reach US$ 2.40 billion by 2030. The market’s forecasted growth is at a CAGR of 20.9% during 2024-2030. In terms of segment, enterprise software was the largest revenue generating in 2023 and is the fastest growing one. Source: Grand View Research Software and Talent as Key for Saudi Companies’ Success By investing in critical infrastructure and creating a supportive regulatory environment, Saudi Arabia is leading the Middle East’s digital transformation and emerging on the global stage as a key player in several digital segments. Saudi companies are quickly catching up with this unprecedented change, by implementing digital transformation strategies. Key elements to this are: Custom software Experienced senior talent Is your company ready for these changes? Contact Q Agency today to transform your business and become part of Saudi Arabia’s new digital landscape. This will enable you to stay competitive and increase your growth. We are developing software solutions for Saudi Arabia’s biggest enterprises. Contact Us Sela and VIA Riyadh – Helping our Saudi Client Achieve Success We have built a custom digital solution for the world’s premier luxury destination. VIA Riyadh website and mobile app Sela is the premier events management company based in Saudi Arabia, with operations spanning globally. One of their newest ventures, Via Riyadh, opened in May 2023, with over 144,000 square meters of surface. Sela’s team, in collaboration with Q Agency, developed a brand new website and mobile application for Via Riyadh. We were responsible for: UX/UI design Frontend development Backend development Mobile app development A segment of UX copywriting and microcopy for the mobile app We have delivered the results in record time. Let us help you achieve your business goals and delight your customers: Contact Us Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 17, 2025 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 17, 2025 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Scrum vs Kanban in a Real Project: What Happens When the Process Starts to Crack - Tech Consulting and Software Engineering URL: https://q.agency/blog/scrum-vs-kanban-in-a-real-project-what-happens-when-the-process-starts-to-crack/ Scrum vs Kanban in a new project? Find out what happens when the process starts to crack and how to manage it properly. Scrum vs Kanban in a Real Project: What Happens When the Process Starts to Crack | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Scrum vs Kanban in a Real Project: What Happens When the Process Starts to Crack Scrum vs Kanban in a Real Project: What Happens When the Process Starts to Crack February 18, 2026 — 9 min read In this article, we’ll take a look at Scrum vs Kanban, and the use of both of these Agile frameworks as new projects come on board. What happens when things start to go south? How to manage and solve the “cracks” properly? Keep reading and learn more about this topic. When we enter a new project, one of the strongest indicators of the organisation’s health is the presence or absence of clear processes. In this case, right after completing the Technology Due Diligence phase, it became clear that the client had significant gaps in how work was being planned, prioritised and delivered . There was no real operational framework. Requests arrived from everywhere: the CEO, marketing, the product owner and occasionally even from individuals who simply “noticed something was off” and sent a message. These requests then were given directly to the team, often without triage, context or discussion. The team had to react to those requests and try to fulfil them, instead of planning and estimating them. Some work was important, some was urgent, some was neither. Still, everything felt equally “top priority”. There was no shared view of what mattered most or why certain things were being done. This setup was good enough while the team was small. At one point, when more people joined the team and when the project grew, it was difficult to keep things under control. We knew this wouldn’t scale. Sooner or later it would start impacting both delivery and the team itself. That’s why our first step was to introduce more structure. Given the situation, Scrum felt like a natural starting point. Why We Started With Scrum The idea behind introducing Scrum was simple. We wanted to slow things down just enough so the team could actually finish what they started. A two-week sprint seemed like a good choice. Anything shorter felt too hectic and anything longer would just delay feedback. At the start of the sprint, we agreed on what the team would work on next, write it down and try not to change it unless we really had to. We also put a bit more structure around estimations. We did this to detect what was risk, what was small and what was likely to take longer. This helped to achieve shared understanding within the team, rather than just talking about the numbers. That was it. No big transformation, no process theatre. Just an attempt to make work a bit more predictable. A Quick Refresher: What Scrum Actually Is (and Isn’t) Scrum is a lightweight framework for solving complex problems and delivering value iteratively. It works by giving teams short cycles (sprints) during which they commit to a set of work, focus on that work without interruption and inspect and adapt through regular ceremonies: Sprint Planning, Daily Stand-ups, Sprint Review and Retrospective. A few principles are key: Commitment over flexibility : Once the sprint starts, scope shouldn’t change. Cross-functional teams : Everyone needed to deliver the increment should be inside the team. Predictability through iteration : Velocity helps forecast future delivery. Clear ownership : A Product Owner prioritises the backlog; the team decides how to deliver. This approach usually works well when the team is stable. Also, it works when there are not that many dependencies or when you can predict them on time. In our case, that approach was not working well as we had both dependencies and the growing team. Where Scrum Started Falling Apart On paper, Scrum made sense for this project. Scrum was meant to give us structure and clearer planning. In reality, we quickly saw that it was taking a lot of effort to run, without delivering the benefits we expected. Truth is, Scrum as a framework was not the problem. The problem was the environment we were trying to apply it in. 1. Constant changes in priorities, even inside the sprint The client operates in a fast-moving setup where priorities change often. New requests would come in during an active sprint, usually triggered by external commitments or sudden business decisions. These weren’t edge cases. They happened regularly. Sometimes these were small changes, but often they were high-priority, “must ship by Friday” tasks. And when the CEO or a senior manager says something must be done by Friday, any illusion of sprint stability disappears. As a result, the team regularly had to break sprint commitments to handle urgent work. This created a ripple effect: Velocity became unreliable. The burndown chart stopped reflecting reality. Failed commitments needed to be explained every sprint. The team lost confidence in estimation, because estimates weren’t honoured. We were trying to commit to stability in an environment that wasn’t stable. 2. Ad-hoc work for specialised team members Beyond standard feature work, some team members (especially in data engineering and DevOps) were receiving tasks outside the backlog entirely. These were operational, urgent and unpredictable. Scrum works when most of the work can be planned upfront. When a large part of someone’s workload is reactive, that quickly stops being true. 3. A dual-vendor setup created unavoidable delays This project wasn’t unique in having multiple vendors, but the dynamics significantly impacted flow. The other vendor owned the codebase. Any change we made had to go through their code review, or their testing process, or sometimes both. In theory, this is manageable. In practice, the other team wasn’t particularly open to collaboration and this created slowdowns that were outside our control. Tasks that should have been completed within a sprint often lingered in “Waiting for review/testing” from the other vendor. This made our sprint burndown look worse than it should have. Work wasn’t “not done” because we didn’t do it. It was blocked elsewhere. But burndown charts don’t know whose queue the task is stuck in. Again, Scrum looked dysfunctional because the environment was dysfunctional. 4. Business deadlines trumped story points Scrum works well when planning is driven by the backlog, not external fixed dates. But there were periods when the client would receive a deadline from their management or partners that something needed to be delivered by a specific date, regardless of our estimation. In those moments, story points, velocity and sprint forecasts became irrelevant. Delivery trumped the process and the team would scramble to meet a hard date simply because the business required it. 5. The scope of work shifted away from the original engagement Our initial scope was to address findings from the Technology Due Diligence. After the project started, that was no longer the main focus. Instead of focusing on improvements, optimisations and technical debt, work that fits well into Scrum, we found ourselves working on core product features and fast-moving requests. In other words: the type of work shifted and the process had to shift with it. The Turning Point: Scrum Alone Wasn’t Enough After several sprints, we were aware that Scrum wasn’t giving us what we needed. We knew that the framework itself wasn’t the issue , the context was. We were trying to enforce stability in an environment that was inherently dynamic, with shifting priorities, external dependencies and irreversible deadlines. We had two options: Blame the environment and fight to “protect the sprint.” Adapt the process to match reality. We chose the second. A Hybrid Model: Scrum Structure With Kanban Flexibility So we’re not talking about Scrum vs Kanban, but rather a model that uses both of these Agile frameworks . We kept Scrum where it made sense and added Kanban practices where we needed flexibility. The goal was simply to have a process that worked for the team and gave the client visibility. 1. We kept the two-week sprints but removed the rigidity. The sprint cadence gave the team rhythm and focus, so we kept it. But we stopped obsessing over velocity and story points, because they simply weren’t relevant in an environment where deadlines were often fixed externally. Instead of asking: “How many points can we commit to?” we shifted to: “What needs to be delivered by what date?” 2. Scope changes inside the sprint were no longer a sin. Rather than pretending the world stops during a sprint, we allowed ourselves to swap items in or out when priorities changed. This removed the guilt and the sense of “breaking the rules.” If a new priority came in: We pulled it into the sprint. We removed something of similar effort or lower urgency. We communicated openly with the client. This made the process resilient instead of fragile. 3. We used Kanban principles to manage flow. We visualised all work on the board, clarified what was blocked and highlighted delays caused by external vendors or waiting for reviews. But we did this inside a sprint structure, not instead of it. The board wasn’t a burndown tool, it was a flow tool . 4. We planned one or two sprints ahead with the client. Working closely with the Product Owner and the client’s technical director, we shaped the high-level scope for the next sprint or two. Then, at planning, we translated that scope into actionable items for the team. This struck a balance between flexibility (Kanban) and structure (Scrum). 5. The team became less stressed and the client saw visible progress. Removing unnecessary constraints and adding transparency had immediate impact: Developers had fewer interruptions during a sprint. The client saw continuous progress on the board. Changes no longer “broke the process.” We stopped spending so much time justifying what was on the board and could focus on doing the work that mattered. More importantly, the process became something that actually supported the team and the client, instead of causing stress. What Our Hybrid Approach Achieved This blended model allowed us to: Maintain focus and organisation through fixed sprints. Accommodate real-world priority changes without ceremony violations. Handle external dependencies more effectively. Give the client clear visibility into progress. Protect the team from unnecessary pressure linked to story points or velocity. It wasn’t Scrum. It wasn’t Kanban. It was a purpose-built delivery model shaped for this client, this context and this team. And it works. Vinka Đurđević Vinka is a senior project manager with more than 12 years of experience in IT. She is a certified Scrum Master, PMP and Agile Practitioner with a background in software development and Salesforce. She enjoys working on dynamic projects and loves collaborating with teams to get things done. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 18, 2026 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 18, 2026 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Secret Santa, where are you? - Tech Consulting and Software Engineering URL: https://q.agency/blog/secret-santa-where-are-you/ Q’s annual Secret Santa brought employees together for a fun gift exchange, with everyone receiving a thoughtful surprise from their colleagues. Secret Santa, where are you? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Secret Santa, where are you? Secret Santa, where are you? January 27, 2019 — 1 min read Every year, all Q sta get together for a secret gift exchange — Secret Santa event! From spices to socks and planners, everyone got something they desire. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 27, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 27, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Secure Shell Connection — SSH and Secure Copy — SCP - Tech Consulting and Software Engineering URL: https://q.agency/blog/secure-shell-connection-ssh-and-secure-copy-scp/ Learn how SSH and SCP work, how to establish secure remote connections, and how to securely transfer files between local and remote systems using the command line. Secure Shell Connection — SSH and Secure Copy — SCP | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Secure Shell Connection — SSH and Secure Copy — SCP Secure Shell Connection — SSH and Secure Copy — SCP September 30, 2019 — 2 min read Secure Shell connection, or shortly SSH, is a cryptographic network protocol. It is used for operating network services over an unsecured network. Connecting via SSH is typically done with a remote command-line, login, and remote command execution. Complementary to SSH we have SCP which is a secure way of transferring files between two remote hosts, a local host, and a remote host or vice versa. SSH provides a secure channel over an unsecured network. This is done by connecting to an SSH server via an SSH client. An interesting thing for SSH connections is that the standard TCP port for them is port 22. First of all, you need to install OpenSSH to the devices you will use for the connection. On Arch-like Linux distributions this is done by running this command in the Terminal: sudo pacman -S openssh Doing that you are ready to connect. To connect to a device you will need to find out its IP address. You can do that by executing the following commands from the Terminal. ifconfig or ip address View of ifconfig command from the Terminal After finding out the IP address of the device that we want to connect to we will have to run the command and enter the password of the user on the device you are connecting to: ssh username@ipaddress -p portnumber View of ssh and exit command from the Terminal Now we are going to copy one file from the local host to the remote host. We are going to do that by executing the following command in the Terminal: scp -P portnumber /destination/of/local/file.fileextension username@ipaddress:destination/of/remote/file.fileextension View of scp command from the Terminal And here we have again used SSH to login to the remote host and check if the file transfer was actually successful. View of files on the remote host desktop The main dierence between SSH and SCP is that SSH is used for logging into remote systems and for controlling those systems while SCP is used for transferring files among remote computers in a network. tibor GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 30, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 30, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Simplifying complexity with MediatR and Minimal APIs - Tech Consulting and Software Engineering URL: https://q.agency/blog/simplifying-complexity-with-mediatr-and-minimal-apis/ In this blog post, you'll learn how to reduce complexity and increase maintainability by using MediatR and Minimal APIs in .NET. Simplifying complexity with MediatR and Minimal APIs | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Simplifying complexity with MediatR and Minimal APIs Simplifying complexity with MediatR and Minimal APIs July 14, 2023 — 13 min read Learn how to reduce complexity and increase maintainability by using MediatR and Minimal APIs in .NET. In software development, it’s often challenging to manage the complexity of an application as it grows. As more features are added, the codebase becomes more difficult to maintain, and changes can introduce bugs in unexpected places. Fortunately, there are several tools and techniques that can help simplify complexity and make our applications more manageable. In this blog post, we’ll explore two of these tools: MediatR and Minimal APIs . MediatR is a library that implements the mediator pattern , which helps in decoupling the components of an application. With MediatR, we can separate the business logic of our application from the presentation layer, while Minimal APIs help in separating the endpoint definitions from the business logic . This approach can help in keeping our code clean and organized, reduce the amount of boilerplate code required, and increase the testability of our application. Minimal APIs are a new feature in .NET 6 and further improved in .NET 7, which provides a simplified way to create APIs without using traditional controllers or actions . Project Example As the title of this blog post says, the main goal for me is to show you how to simplify complexity when you have various services and other implementations inside the API controller. For example, I created a .NET Core Web API project for creating and reading blogs by id. Inside that project, we have an API controller that looks like this: [ApiController] [Route("[controller]")] public class BlogController : ControllerBase { private readonly ILogger _logger; private readonly IMapper _mapper; private readonly IBlogRepository _repository; private readonly IMemoryCache _cache; private readonly IEmailService _emailService; public BlogController( ILogger logger, IMemoryCache memoryCache, IMapper mapper, IBlogRepository blogRepository, IEmailService emailService) { _logger = logger; _repository = blogRepository; _mapper = mapper; _emailService = emailService; _cache = memoryCache; } I made 2 endpoints for this example. [HttpPost] public async Task> CreateBlog(CreateBlogRequest request) { var blogEntity = _mapper.Map(request); var newBlog = await _repository.Create(blogEntity); _logger.LogInformation("Blog {Id} is successfully created", newBlog.Id); try { var email = new Email() { To = "author_email@gmail.com", Body = $"Your blog {newBlog.Title} was created.", Subject = "Blog was created!" }; await _emailService.SendEmail(email); } catch (Exception ex) { _logger.LogError("Blog {Id} failed due to an error with the mail service: {ExMessage}", newBlog.Id, ex.Message); } return CreatedAtRoute("BlogById", new { id = newBlog.Id }, newBlog); } [HttpGet("{id:guid}", Name = "BlogById")] public async Task GetById(Guid id) { if (!_cache.TryGetValue($"blogId-{id}", out BlogResponse? blogsDto)) { var blogs = await _repository.GetById(id); if (blogs == null) { _logger.LogInformation("BlogId {Id} is not found!", id); return NotFound(); } blogsDto = _mapper.Map(blogs); _cache.Set($"blogId-{id}", blogsDto, TimeSpan.FromSeconds(60)); } return Ok(blogsDto); } I understand that this example is not particularly busy or complex. In real-life scenarios, things often become much more crowded. I intentionally simplified it for clarity. Additionally, I’d like to mention that if you examine the code available on GitHub, you’ll notice that I didn’t pay attention to validation in this example. However, it would be advisable to include email address validation since we will be sending that email to an email service later on. Nevertheless, these minor issues do not pose significant obstacles in this case. You can see in this example that logging and caching controls, mapping operations, and service calls in each API method in the controller turn into blocks of code that are difficult to read and understand as time passes. In most cases, these controllers become large and fat, which is one of the main anti-patterns to avoid. Although these endpoints are not too complex, we still need to refactor them. In complex examples, you’ve probably heard a bunch of times “if it ain’t broke, don’t fix it,” however, there are many different approaches to simplify and solve that. The one I want to focus on is applying the mediator and CQRS patterns together. This approach simplifies our code while also ensuring compliance with the SOLID principles. Let’s see how we can achieve that with MediatR. MediatR MediatR is a very popular open-source library for C#. It follows the CQRS and mediator pattern , which is a behavioral design pattern that allows objects to communicate with each other without being tightly coupled. It provides several different types of mediators, including request/response, notification, and pipeline mediators. In MediatR, every request that is sent is accompanied by a handler . The handler is responsible for processing the request and returning a response. To help illustrate how MediatR works, imagine that you have a service that needs to send a request to another component of your application. You can send the request to MediatR instead of directly to the component. This makes it easy to implement different types of interactions between components in the application and also makes it easier to test, maintain, and extend our code. Let’s see how to implement it. We’ll start by installing MediatR via Package Manager Console or through the NuGet library. Install-Package MediatR After that, we need to open Program.cs and register that service. builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Program).Assembly)); We have to provide a default configuration to the constructor. Now MediatR is configured and ready to go. MediatR Requests MediatR requests are very simple request-response style messages, where a single request is synchronously handled by a single handler (synchronous from the request point of view, not C# internal async/await). Good use cases here would be returning something from a database or updating a database. So basically we have only 2 types of requests, command and query requests. This architectural design is called Command-Query Separation . So next step is to create 2 new folders in our project: 1) Commands 2) Queries Since we only have two endpoints, we can keep the logic for the GetBlogById endpoint in the Queries folder and the CreateBlog endpoint in the Commands folder. For larger projects with multiple entities, it’s beneficial to create separate folders within these folders for better project structure. Let’s start with command record creation inside the Commands folder: public record CreateBlogCommand(CreateBlogRequest BlogRequest) : IRequest; Our command has a single parameter sent from the client, and it inherits from IRequest . Our request has to return BlogResponse (data transfer object) because we will need it, in our action, to create a valid route in the return statement. If you have a situation where you don’t need to return any value, then your record or class should inherit just from IRequest without parameters. When a request is created, you will need a handler to solve the request. Each request type has its own handler interface as well as some helper base classes/interfaces. They depend on two parameters, request and response. For this purpose, CreateBlogHandler needs to be created which will handle that request. Logging and mapping mechanisms should be injected into that handler alongside the email service for now. Basically, every handler handles a single command or query, and with that, the Single Responsibility Principle is achieved, which is one of the benefits MediatR gives us. Additionally, it is possible to define new mediator objects without making modifications to existing mediator handlers. This approach allows us to achieve the Open/Closed Principle . public class CreateBlogHandler : IRequestHandler { private readonly IBlogRepository _blogRepository; private readonly IMapper _mapper; private readonly ILogger _logger; private readonly IEmailService _emailService; public CreateBlogHandler( IBlogRepository blogRepository, IMapper mapper, ILogger logger, IEmailService emailService) { _blogRepository = blogRepository; _mapper = mapper; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _emailService = emailService; } public async Task Handle(CreateBlogCommand request, CancellationToken cancellationToken) { var blogEntity = _mapper.Map(request.BlogRequest); var newBlog = await _blogRepository.Create(blogEntity); _logger.LogInformation("Blog {Id} is successfully created", newBlog.Id); try { var email = new Email() { To = "author_email@gmail.com", Body = $"Your blog {newBlog.Title} was created.", Subject = "Blog was created!" }; await _emailService.SendEmail(email); } catch (Exception ex) { _logger.LogError("Blog {Id} failed due to an error with the mail service: {ExMessage}", newBlog.Id, ex.Message); } var blogsResponse = _mapper.Map(newBlog); return blogsResponse; } } And that’s it, now we can do the same thing, but for GetBlogsById . You can see how I can handle HTTP GET by defining a GetBlogByIdQuery as a MediatR request (message) public record GetBlogByIdQuery(Guid Id) : IRequest; public class GetBlogByIdHandler : IRequestHandler { private readonly IBlogRepository _blogRepository; private readonly IMapper _mapper; private readonly ILogger _logger; private readonly IMemoryCache _cache; public GetBlogByIdHandler(IBlogRepository blogRepository, IMapper mapper, ILogger logger, IMemoryCache cache) { _blogRepository = blogRepository; _mapper = mapper; _logger = logger; _cache = cache; } public async Task Handle(GetBlogByIdQuery request, CancellationToken cancellationToken) { if (!_cache.TryGetValue($"blogId-{request.Id}", out BlogResponse? blogsDto)) { var blogs = await _blogRepository.GetById(request.Id); if (blogs == null) { _logger.LogInformation("BlogId {Id} is not found!", request.Id); return default; } blogsDto = _mapper.Map(blogs); _cache.Set($"blogId-{request.Id}", blogsDto, TimeSpan.FromSeconds(60)); } return blogsDto; } } After reaching this point, the only task remaining will be forwarding the request to the appropriate API method through the mediator object in the controller. By applying this refactoring to each API method in the controller, we can achieve a remarkably lightweight and efficient API controller . We just need to eliminate all dependencies within the controller and inject the IMediator interface. [ApiController] [Route("[controller]")] public class BlogController : ControllerBase { private readonly IMediator _mediator; public BlogController(IMediator mediator) { _mediator = mediator; } We use the Send method of the IMediator interface to send a request to our handler and pass the GetBlogByIdQuery as a parameter. So, what happens behind the scenes is that when we invoke the Send method with the request as GetBlogByIdQuery , the mediator will invoke the handler which accepts this request. In our case, it will go and call the GetBlogByIdHandler class and return the response as BlogResponse. [HttpGet("{id:guid}", Name = "BlogById")] public async Task GetById(Guid id) { var blog = await _mediator.Send(new GetBlogByIdQuery(id)); return blog != null ? Ok(blog) : NotFound(); } The same thing we can do for the CreateBlog endpoint. [HttpPost] public async Task> CreateBlog(CreateBlogRequest request) { var newBlog = await _mediator.Send(new CreateBlogCommand(request)); return CreatedAtRoute("BlogById", new { id = newBlog.Id }, newBlog); } MediatR Notifications So far, we have only observed a single request being handled by a single handler. However, what if we need to handle a single request with multiple handlers? That’s where notifications come into play. Notifications enable us to broadcast information or events to multiple handlers without expecting a response . This functionality proves valuable in scenarios where you need to notify various components of your application about an occurrence or trigger specific behaviors based on events. Notifications are particularly useful in microservices architecture as they facilitate decoupled communication, event broadcasting, handling cross-cutting concerns, and asynchronous processing. They promote loose coupling between components, allow for broadcasting events to multiple subscribers, handle cross-cutting concerns efficiently, and trigger asynchronous tasks. In the previous section, I mentioned that the EmailService is currently injected into the CreateBlogHandler . Now, it is time to transfer that service from the handler to the INotificationHandler . This approach guarantees application responsiveness and optimal performance by sending email notifications in the background without affecting the primary functionality of the CreateBlogHandler . However, before proceeding, it is considered good practice to create a new folder called Notification and include the class BlogCreatedNotification within it. public record BlogCreatedNotification(Blog Blog) : INotification; The notification has to inherit from the INotification interface. This is the equivalent of the IRequest but for Notifications. Now the next step is to create an EmailHandler . public class EmailHandler : INotificationHandler { private readonly IEmailService _emailService; private readonly ILogger _logger; public EmailHandler(IEmailService emailService, ILogger logger) { _emailService = emailService; _logger = logger; } public async Task Handle(BlogCreatedNotification notification, CancellationToken cancellationToken) { try { var email = new Email() { To = notification.Blog.CreatorEmailAddress, Subject = $"Blog {notification.Blog.BlogTitle} was created!", Body = "Hey buddy, your blog is created successfully!" }; await _emailService.SendEmail(email); } catch (Exception ex) { _logger.LogError("Blog {Id} failed due to an error with the mail service: {ExMessage}", notification.Blog.Id, ex.Message); } } } After we implement that, we just need to remove the dependency to IEmailService inside our CreateBlogHandler , add IMediator instead, and then publish the BlogCreatedNotification event inside the Handle method. public async Task Handle(CreateBlogCommand request, CancellationToken cancellationToken) { var blogEntity = _mapper.Map(request.BlogRequest); var newBlog = await _blogRepository.Create(blogEntity); await _mediator.Publish(new BlogCreatedNotification(newBlog), cancellationToken); _logger.LogInformation("Blog {Id} is successfully created", newBlog.Id); var blogsResponse = _mapper.Map(newBlog); return blogsResponse; } Replace Controllers with Minimal APIs Controllers are a common architectural component in web development, but Minimal APIs offer a sleek alternative . If you come from the .NET world you probably heard that minimal APIs are the most popular feature from .NET 6. The core idea behind Minimal APIs is to remove some of the ceremonies of creating simple APIs. It introduces a concept that is not really a new thing, we already have something similar in Golang and Node.js. When you create a new MVC solution out of the box we get a lot of boilerplate code. Minimal APIs have no need for controllers, and you can create endpoints as easily as: var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello Qumans!"); app.Run(); This call specifies a route (e.g., “/”) and a callback to execute once a request that matches the route and verb matched. The method MapGet is specifically to map an HTTP GET to the callback function. Much of the magic is in the type of inference that’s happening. When we return a string (like in this example), it’s wrapped in a 200 (e.g., OK) return result and that’s it. 🙂 OK, now with a few lines of code inside Program.cs, we can replace our Blog controller. app.MapGet("/blogs/{id:guid}", async (IMediator mediator, Guid id) => await mediator.Send(new GetBlogByIdQuery(id)) is var blog ? Results.Ok(blog) : Results.NotFound()) .WithName("BlogById"); app.MapPost("/blogs", async (IMediator mediator, CreateBlogRequest request) => { var newBlog = await mediator.Send(new CreateBlogCommand(request)); return Results.CreatedAtRoute("BlogById", new { id = newBlog.Id }, newBlog); }); We do not however want to overload the Program.cs file with endless endpoints in real-life scenarios, the easiest way is just to simply create an extension method to register the middleware and the handlers you need for your endpoints. But for this purpose, I think we can live with it. Conclusion In this blog, I tried to show you that MediatR and Minimal APIs can offer a powerful combination for simplifying complexity in your projects. MediatR provides a great starting point for an application that needs to evolve from a simple monolith into a more mature application, by allowing us to separate read and write concerns, and minimizing the dependencies between code, while Minimal API is a great feature that reduces code complexity by providing a streamlined approach to building applications, complementing the benefits of MediatR for separating concerns and minimizing dependencies. Code available at GitHub Repo . Matija Belancic Matija is a .NET Developer with 5 years of experience in various domains. Always looking to improve his coding skills by contributing to open-source projects in the form of writing code or just watching tutorials or reading blogs during his spare time. Spending time with his family is important to him, as well as playing basketball or beach volleyball with friends. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 14, 2023 — 13 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 14, 2023 — 13 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Sketch&Design Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/sketch-design-meetup/ Q’s Sketch&Design Meetup explored motion design, UX/UI, and what seniority means in the design industry, featuring talks from experienced designers and developers. Sketch&Design Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Sketch&Design Meetup Sketch&Design Meetup July 8, 2019 — 2 min read t was a cloudy and rainy day, but the bravest of all joined us at Q for Sketch meetup where guys talked about motion design and seniority. Talk #1 Zoran Pleško, CTO and co-founder of boutique IT agency Machinery shared with us what are the limitations of animations from a developer’s point of view and gave examples of how a designer should approach animations. Talk #2 Goran Vrbanić Trtinjak, Senior UX/UI & Motion Designer with a Master’s Degree in Information technologies. Working in Q. He talked about complex problems and turning them into simple and intuitive designs. “Every designer should be a storyteller. Deliver a memorable user experience by improving static user interfaces. Don’t use words to explain, simply show.” Talk #3 Krispin Stock, Freelance and Senior UX designer at Martian & Machine. With an education background heavily in art, Krispin went from classical design through marketing to land in digital design and UX specifically. He firmly believes that design and business decisions should be based on measurable data, research, and test results rather than the gut feeling or artistic ego of anyone including himself. Krispin is our novelty breaker, he made us think hard about what seniority actually means. With a few stories of his own, alongside his fellow speakers, we heard about the various sides of the mythical word “senior”. And of course, after the talks and rales, we went to hang out on to a cozy terrace stocked with refreshments and snacks. Paula Kovacevic Paula is the Head of Operations, working on process improvement and developing the company's quality level. She is a Certified Internal Auditor for Quality Management and soon-to-be a Six Sigma Green Belt Master. She strives to keep processes simple and clients happy. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 8, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 8, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Selling Like Mourinho: Why a Great Software Development Partner Always Has a Great Coach - Tech Consulting and Software Engineering URL: https://q.agency/blog/software-development-partner-account-manager-football-coach/ Looking for a software development partner? Check out what a football coach and an Account Manager have in common and see how it can help you Selling Like Mourinho: Why a Great Software Development Partner Always Has a Great Coach | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Selling Like Mourinho: Why a Great Software Development Partner Always Has a Great Coach Selling Like Mourinho: Why a Great Software Development Partner Always Has a Great Coach July 29, 2025 — 3 min read They say the sphere is the perfect geometric shape. It’s no surprise, then, that my lifelong fascination has been with the ball – the football, to be exact. In many ways, choosing the right software development partner is just as crucial and elegant a decision as picking the perfect pass in the final third. Beyond the beauty of the game itself, it’s the people around it that make it truly special. And just like in football, in the business world I see three key roles: the players, the coach, and the management . Life, in its own mysterious way, handed me the role of a salesperson. But not just any salesperson, I sell from within Q agency, a proven software development partner. Talk about life goals! I remember April 28th, 2010, when Jose Mourinho’s Inter Milan parked the bus at the legendary Camp Nou. Despite the loss, they knocked out Guardiola’s seemingly invincible Barcelona thanks to away goals. I watched in awe as the Special One sprinted across the pitch, soaking in the rage of opposing fans. It wasn’t flair or beauty that won that night – it was discipline, structure, and tactical brilliance. Sales is no different. You don’t always need the flashiest suit, the slickest pitch, or the biggest smile. You won’t always break records or shake the market. Sometimes, listening well is enough. Sometimes, a small deal is a great deal, because it opens the door to that holy grail of sales: the upsell . And when that upsell comes naturally, not pushed, not forced, then its real value is even bigger for the client. In this analogy, management are my bosses, and players are our clients. Like footballers, clients come in all shapes and temperaments, each with their quirks, ambitions, collaboration styles and urgent needs. Management, on the other hand, wants results . How you get them is often secondary, as long as you deliver. That’s why I see myself as the coach. I’m not just selling to clients, I’m also selling ideas internally. Sometimes, it’s harder to convince your own team than it is to win over a prospect. You have to know your people, and ask them, when needed, to go the extra mile. Like when Mourinho moved Samuel Eto’o, one of the best strikers in the world – to play right back. Crazy move. But it worked. It’s the same with me. I nudge, push, and beg our lead gen teams, marketers, pitch leads and directors to take that extra step, not for me, but for the client. Our job isn’t to drop a proposal and disappear. Our job is to read the whole field, to understand both what the client needs and what our team can realistically deliver. With surgical precision. Like Modrić. So, if you’re someone who knows how to balance performance and grit, someone who doesn’t panic when the ball gets stuck in the mud, maybe Q is your next football pitch . And to our clients: Behind every email and call is someone playing for your team, sometimes even against our own “management”. Because in football, and in sales, what matters most are the points we win – together . So if you’re ready to succeed together with a reliable software development partner, don’t hesitate to get in touch. We’d love to see how we can create a winning business story with you. Let’s connect and turn ideas into results. Mario Levarda Mario is a Business Development professional who works as Key Account Manager at Q. In his free time, he’ll watch a good movie, play video games or football. Reading a good comic book is also his all-time favourite to unwind and relax. Mario is also very open to meeting new people and chatting about different ideas, no matter the topic. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 29, 2025 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 29, 2025 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Spooky Little Halloween - Tech Consulting and Software Engineering URL: https://q.agency/blog/spooky-little-halloween/ Q celebrates Halloween with creative costumes, spooky fun, and a little office spirit. Spooky Little Halloween | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Spooky Little Halloween Spooky Little Halloween November 4, 2019 — 1 min read It’s the million-dollar question every October: what are you gonna be for Halloween? Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 4, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 4, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Spring BBQ party - Tech Consulting and Software Engineering URL: https://q.agency/blog/spring-bbq-party/ Q agency kicks off barbecue season with a spring BBQ party featuring great food, drinks, music, and over 200 burgers and hot dogs. Spring BBQ party | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Spring BBQ party Spring BBQ party May 29, 2019 — 1 min read Grilling for a big crowd. It was Friday 5 pm and no one ran home. Sun was shining and it was time to open this year’s barbecue season and throw a big party on our Garden terrace. Everyone was involved with the preparation and happy to be a part of this delicious project, even the vegetarians who enjoyed delicious veggie burgers :D. Our COO Vedran volunteered to be a grill master so he outdone himself like he promised to and made over two hundred burgers and hot dogs. When you combine good craft beer, nice music, and full stomachs, a party always lasts until the late hours. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 29, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 29, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Sprint Cycle - An Overview From the QA Perspective - Tech Consulting and Software Engineering URL: https://q.agency/blog/sprint-cycle-an-overview-from-the-qa-perspective/ Explore the sprint cycle from a QA perspective. Learn how testing fits into each phase to ensure quality, improve collaboration, and deliver better products. Sprint Cycle - An Overview From the QA Perspective | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Sprint Cycle – An Overview From the QA Perspective Sprint Cycle – An Overview From the QA Perspective June 23, 2025 — 5 min read Where does the sprint start? Maybe from the first day of the sprint or earlier? Earlier, because the cycle does not start from the first day of the sprint, it always starts before 🙂 There are five Scrum Events recognized in Scrum: Daily Sprint Planning Sprint Review Sprint Retrospective Sprint I won’t write about what each scrum event is but how Quality Assurance feels in these Events and when the Sprint cycle begins for Quality Assurance. The agile Quality Assurance process begins at the start of the software development life cycle. Will go from the initial design and planning meeting, through the development phase, to the final testing of the application. This process is usually repeated in two-week sprints until the project is released. ​​ Quality Assurance is essential . If you have ever been frustrated with the technology in your life before, often it is a result of poor software quality. The Role of QA is Integral to the Success of Each Project Modern companies have made the shift from the traditional waterfall development methodology to an agile process . Agile testing introduces QA into the project as early as possible to foresee issues, write and execute test cases, and uncover any gaps in the requirement. Sprints benefit the client by delivering working software earlier rather than later, anticipating change, providing better estimates in less time, and allowing the course corrections instead of completely derailing the project. The QA team can incorporate lessons learned from previous projects to improve the process for future projects. Important Steps for the Sprint Cycle From a QA Perspective 1. QA must be in sprint planning and estimation The project manager, developers, and QA are mandatory participants for this session. QA specialists bring a unique perspective to reviewing user stories and planning tasks. They do not consider only happy paths but also some negative scenarios and edge cases and can identify gaps. QA things out of the box. 2. All tasks must be testable The tasks must be testable. Some tasks require additional preparation, data, access, tools to make it possible to test them. If such tasks are prepared and we ensure that all blockers are resolved, we can include them in the sprint plan. On the other hand, if some tasks are marked as Ready for QA, but cannot be tested, don’t even get caught trying. 3. Tasks need to be broken into small parts By keeping tasks small and simple, you decrease the communication overhead and the risk of missing deadlines. Since the bug reports from the QA side require further discussion, research, and finally fixing those same bugs in the same sprint, the time is very short. 4. Prepare test cases It would be best if all test plans and edge cases were prepared before each planning. Of course, this is not always possible, especially if there are some risks or errors themselves. Sometimes some test cases can be prepared after sprint planning. Once development has begun working on the tasks, QA can be finalizing test cases. 5. Regression testing After every release, full regression testing would be preferred, especially with the product releases. Full regression testing should take a max of 6-7 hours and cover all the application parts. Sometimes, QAs use smoke testing with the most important aspects of the application to know that the application will not crash after it is released to production. A crucial thing for QA is to TEST OFTEN !!! Within each sprint, QA engineers test and re-test the product with each new feature added. This allows them to validate that the new features were implemented as expected and to catch any defects that may have been introduced. It is important to test as early as possible and as often as it is needed results in time and budget spare. After each sprint, the whole team has a meeting that is called Sprint retrospective . The team looks back on the last sprint and talks about what went well and what should be improved in the next sprint. The QA tells their review on the sprint from problems with the environments, critical bugs found late in the process, to long-lasting scenario reviews. In addition to some blockers or problems that were in the sprint, the team shares positive feedback, such as exceptional teamwork or good collaboration between developers and testers. The main goal is to apply these findings for future sprint improvements. While every sprint is dierent, they share the same goal — delivering the best quality to the users. The main goal is to apply these findings for future sprint improvements . While every sprint is dierent, they share the same goal — delivering the best quality to the users. One more important thing for QA is to Know your Audience. That means that the QA process will improve. Will enable your team to build value-driving applications . When you are familiar with who will be using the actual end-product, you can better prioritize the QA process to save time and money in the sprints! Team Work Makes the Dream Work Behind each project, there is a team of professionals. Each person working on the project is responsible for ensuring the quality, but the primary responsibility for quality rests with the QA team. The QA team understands what the client needs the system to do and can prove the client’s satisfaction with the system. Conclusion When starting on your next sprint , and after that, be sure to involve your QA member from the beginning of project planning until final execution. Lucija Drobac Lucija is a Quality Assurance Team Lead that raises software quality with her skills and various testing techniques. She holds her team like a drop of water in the palm of her hand. When Lucija is not testing and supporting her team, she runs through the woods, learns how to play guitar or sits back and reads a good book. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 23, 2025 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 23, 2025 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # St. Gallen University visit - Tech Consulting and Software Engineering URL: https://q.agency/blog/st-gallen-university-visit/ University of St. Gallen students visited Q to explore our culture, work environment, and technology projects, including a platform built for the university. St. Gallen University visit | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > St. Gallen University visit St. Gallen University visit April 11, 2019 — 1 min read Students from the University of St. Gallen came to our oice to get to know us, see our work environment and the culture of a company. We organized a warm welcome, a guided tour of the oice, and a presentation so they could learn a bit more about Q and had the opportunity to gain insights into how we operate in dierent markets. During a company visit, students are engaged to think about how they might connect with jobs in the tech sector. With the incredible demand and limited supply of skilled workers, this kind of visit enables students to learn more about their future career possibilities. What is interesting is that Q is actually working on a project for University of St. Gallen and what we did we built a “central platform” for their students & sta. Now everybody has access to all relevant info; students can see their schedule, exams, grades, learning materials; professors can upload their materials, finance department can see who paid the tuition, etc. It quickly became a popular solution that is now sold worldwide to universities and big companies which invest in employee education. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 11, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 11, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # St.Nicholas in Q - Tech Consulting and Software Engineering URL: https://q.agency/blog/st-nicholas-in-q/ Q celebrated St. Nicholas with a fun kids’ Christmas party featuring games, creative workshops, competitions, and plenty of festive treats. St.Nicholas in Q | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > St.Nicholas in Q St.Nicholas in Q December 17, 2019 — 1 min read Another important visit this year! This time our guest came in the middle of the night and left tons of sweets. He asked nothing in return, just to call our young ones to come and pick up the presents under the Christmas tree. What better way to celebrate the season and show appreciation for our employees and their families than to have a great kids Christmas party with holiday rentals so, in the honor of our dear Saint Nicholas, we organized everything on our end. We welcomed kids into the workplace with Play Station, pool, table soccer tournament, board games, creative workshops, singing and dancing competitions, you name it, we had it! Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 17, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 17, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Staff Augmentation Services: What, Why, How? - Tech Consulting and Software Engineering URL: https://q.agency/blog/staff-augmentation-services-what-why-how/ What are staff augmentation services? An outsourcing model where your company uses external talent to fill in temporary job positions. Staff Augmentation Services: What, Why, How? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Staff Augmentation Services: What, Why, How? Staff Augmentation Services: What, Why, How? February 20, 2025 — 3 min read What are staff augmentation services? Staff augmentation services are an outsourcing model where your company uses external talent skills and expertise to fill in temporary job positions. The experienced augmented staff integrates seamlessly with your own IT team to achieve your business goals. What are the benefits? Speed up the time to hire Build products faster Speed up the time to market Close the knowledge gap Hire highly skilled IT professionals Increase flexibility and reduce risk Why would your company need staff augmentation? As the 2024 labor shortage trends show: 75% of employers are not able to fill job vacancies. 16 countries report software developers as a shortage. 12 countries report app developers as a shortage. In tech industry, the 10 most in-demand jobs are: software engineer, project manager, full stack engineer, business analyst and data engineer. The need for staff augmentation services grows because of: Intense competition for top talent Inadequate preparation for emerging technologies that are rapidly expanding Existing talent pool lacking experience or up-to-date education Those businesses that have decided to opt for staff augmentation did it to: Temporarily fill in the job vacancies while looking for permanent employees. Find talent with special skills that are required for one-time projects. Augment their existing capacity to build digital products faster, shorten time to market and be more flexible. How does it work? The IT staff augmentation process is divided into 5 straightforward steps: 1. Discovery workshop The discovery phase is key to long-term success. The goal of the workshop is to thoroughly understand your business goals and your users’ needs. Together, we will determine the ideal team configuration to reach your goal. 2. Job specifications We work with you to create detailed job specifications for each role, outlining the necessary skills, expertise and qualifications. 3. Candidates preselection You will receive a curated list of candidates to augment your staff. We can also select external candidates for specific roles, which are thoroughly tested and interviewed before being onboarded. 4. Onboarding We facilitate the onboarding process, ensuring new staff members are integrated smoothly into your organisation and understand your workflows. Onboarding can also be conducted at your office. We encourage our clients to have the augmented team meet your employees and learn about your company’s culture. 5. Daily stand ups and reporting Our team provides daily stand ups, regular check-ins and calls to ensure transparency, track progress and address any issues if needs arise. Why choose Q Agency for staff augmentation? Employee treatment: Your augmented team members are treated like your own employees. Variable Pricing Model. You pay for the actual time and material used on the project, allowing for flexibility and adaptability in project scope and deliverables. A cap can be defined to limit maximum costs, ensuring budget control and predictability. This model provides transparency and ensures you only pay for the resources you actually use. One-stop-shop: From digital product design to development, find all your business needs in one place. Time zone and communication: The Central European Time (CET – Paris, Berlin) zone makes Croatia compatible for working with European partners and US-based companies too. All our team members speak fluent English. High retention rates: Enjoy loyalty and high retention rates within our teams. Cultural fit: We ensure seamless integration with your company culture and workflow. Continuous education: Our team members receive ongoing professional development. Number 1 employer in Croatia for 3 consecutive years. 300+ experts in our development teams. Contact us now to discuss your staff augmentation needs: Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 20, 2025 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 20, 2025 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Supabase vs Firebase: A Detailed Flutter Integration Comparison - Tech Consulting and Software Engineering URL: https://q.agency/blog/supabase-vs-firebase-a-detailed-flutter-integration-comparison/ When developing any app with Flutter, choosing the right backend service can make or break the success of the app. Supabase vs Firebase: A Detailed Flutter Integration Comparison | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Supabase vs Firebase: A Detailed Flutter Integration Comparison Supabase vs Firebase: A Detailed Flutter Integration Comparison April 29, 2024 — 10 min read When developing any app with Flutter, choosing the right backend service can make or break the success of the app. The backend doesn’t just support the basic data needs of a mobile app (like adding, editing, and deleting records), but also typically provides authentication, real-time updates, storage, and more. Today, we’ll run through our comprehensive comparison of two popular backend services in the Flutter ecosystem: Supabase and Firebase. Each has its own unique set of features, along with its own list of pros and cons, and choosing the best one for you could make or break your Flutter application. Supabase gives developers the power of PostgreSQL for their database needs, along with real-time updates and auth services. Firebase, which is backed by Google, has been around longer and offers two types of databases along with auth and cloud functions, among other services. We’ll highlight different parts of these platforms to help you evaluate them for your next Flutter project. Is Supabase any good? Yes, Supabase is already emerging as a robust open-source alternative to Firebase, offering a complete backend feature set that demands attention from developers. But, it’s much more than just another backend service: Supabase is designed to be a full-featured Firebase replacement, with everything from real-time databases and authentication services to storage capabilities and a stack of other functions that supports open-source development. A major draw is that you can use Supabase as a managed service, or self-host your entire backend infrastructure, giving you an unparalleled degree of control and flexibility for your projects. Key Features: Complex queries in the PostgreSQL database. Real-time subscriptions Authentication with multiple providers Row-level security Pros and Cons: Pros: Open, more chances to operate one’s data, supports to run complex queries. Cons: Younger community, not much detailing when faced with Firebase. What is Firebase? Firebase, built by Google, can be considered as a vital instrument in the area of app making, offering an elaborate set of backend services, which simplify many app processes, including its construction, administration, and progress. The simplicity of use, scalability, and following numerous features are some of its memorable traits that have made it the favorite platform for developers worldwide. Firebase is, and more than database, its an ecosystem specifically developed to address the entire development lifecycle, including hosting, analytics and more, all addressed in a single place. The two components interoperate and improving service tendering is not the sole aim as app performance and user experience also increase. Key Features: Having Firestore and Realtime Database for data storage. Using Firebase Authentication service by several service providers. Serverless low-cost cloud computing enabled by Cloud Functions. Hosting and Storage solutions Pros and Cons: Pros: Mature platform, high documentation, goodness of support from community. Cons: Not adapted to do complex queries, data migration process difficulty. Comparison Table Feature Supabase Firebase Database PostgreSQL (Relational) PostgreSQL (Relational) Database Yes, with real-time subscriptions Yes, with Firestore and Realtime Database Authentication Supports multiple providers, integrates with PostgreSQL for security Supports various providers, including custom and third-party auth systems Storage Provides straightforward storage solutions Leverages Google Cloud Storage Serverless Functions Integrating PostgreSQL functions for serverless computing Cloud Functions for serverless computing Pricing Model More predictable, based on storage and database usage Costs based on read/write operations and storage, can be unpredictable Community & Support Younger community, growing documentation Mature platform, extensive documentation, strong community support Feature Set Availability Amongst the features, Firebase holds a slight edge, mainly in real-time updates & authentication services, which is the indication of fact that it is a mature platform and offers its users wider spectrum of features. Supabase is competitive in that it competes equally across the board mostly because it supports PostgreSQL databases and serverless functions which can be more dynamic when compared to other database options. Flutter’s endless integration capabilities Supabase Integration Steps : Make sure to add the Supabase Flutter package and specify your project’s URL and anonymous key while initializing the client. Next, start accessing services like authentication or database queries to perform in your Flutter app later on. Firebase Integration Steps : Add Firebase to your Flutter project via the Firebase CLI or Firebase console, and integrate the required Firebase modules for Flutter. Then, deliver all the necessary configurations to use services like Realtime Database, Authentication, Firestore, and Cloud Functions. In this regard, user could again go through the documentation of the Supabase or Firebase platform for more reasonable guidance. Use Cases And Grasp Of Knowledge Ideal Use Cases for Supabase: High relational data management tasks like SQL where they need to hit SQL’s strengths. Apps including processed data updates alongside amazing security functions. Particular projects whose notion of freedom amplified by open-source is essential and where different vendors are not liable. Ideal Use Cases for Firebase: This can be the commonly used building and management block for applications that will contribute to the backend. Sizing and scaling tasks with databases of noSQL nature and synchronization in real time. From 1 – 10 Apps being deployed with built-in analysis and automated capacity without much in the backend management. Aspect Supabase Firebase Documentation Quality Interface equipped with functionality for developers at ease utilising SQL, paying heed to technical database-centricity perspective. Extensive documentation supported by Google, as well as spread across a number of different development scenarios, and tailored to the needs of developers at all levels of expertise. Community and Support Resources Quickly ensembles community in which GitHub, Stack Overflow and Discord, respectively – open source paradigms and massive user base involvement, are the vital components. A large and growing community backed by the Google, which provides there are materials such as forums and specific groups and many developers and mentors who are ready to work with students whenever they need them. Community Support and Ecosystem Younger, with fewer members and a richer ecosystems but with refunds and a support. This ecosystem is characterized by its dynamic and expanding scope. This community is known for its strong size, well-developed ecosystem, top quality documentation and support, these things ultimately reflect the longstanding position on Google’s developer platforms. Performance and Reliability Latency and Throughput: These two platforms, Supabase and Firebase, both advocate for the reduction of latency and higher throughput, however, the inner database technologies in the backend may act differently. Supabase, with PostgreSQL, must be advantages for complicated query situations, but Firebase NoSQL databases could enable quick answers in simple, file-based queries. Reliability and Uptime: Both of the platforms give high reliability and uptime guarantees; however Google Cloud’s infrastructure is used by Firebase and Supabase gives robust cloud services. Through their data integrity and service availability architectures, they become able to overcome the challenges of data delays and data loss. Pricing Models and Limitations Firebase: Free Tier (Spark Plan) : Provides professional service for nothing – Firestore (database), Firebase Authentication, and Cloud Functions (cold start). Nevertheless, you may encounter limitations of database reads/writes, stored data, as well as cloud function invocations. Paid Tier (Blaze Plan) : And flection for use. Pricing for Firestore read/writes/deletes and stored data are dependent on use. Also, Cloud Functions execution time and invocations products are priced depending on usage. Supabase: Free Tier : Limits the storage of database to a fixed extent and lacks real-time capabilities, greatly restricting the use of row counts for authentication and serverless functions. Pro Tier : A monthly fee for additional limiting of storage in the database, real time subscriptions, and more generous provision of usage allowance for authentication and serverless functions. Designed to work at the scale of applications. Let’s simulate a basic cost comparison . We’ll assume: Small project : 100,000 reads/writes per day, 1 GB stored data, 10,000 auth sign-ins, and 1,000 function invocations. Medium project : 1,000,000 reads/writes per day, 10 GB stored data, 100,000 auth sign-ins, and 10,000 function invocations. Large project : 10,000,000 reads/writes per day, 100 GB stored data, 1,000,000 auth sign-ins, and 100,000 function invocations. Key Insights: Small Projects : Supabase may be slightly cheaper than Firebase which makes it an even better option for new startups or projects that are still growing especially because they have limited scaling. Medium Projects : While the cost margin between Firebase and Supabase has narrowed, Supabase presently provides a slightly higher allowance, hinting that it is fit for the purpose of scaling. Large Projects : Large Projects: Supabase poses a noticeable cost advantage for big-scale operations compared to Firebase. Hence, one might go for Supabase over the other. Security Features Supabase Security Measures: PostgreSQL Security : Supabase capitalizes into PostgreSQL and with its high level security features such as row-level security which permits the development of complex access controls. This capability is an indispensable part of the whole process of operating apps with finely crafted access policies. JWT Authentication : JWT (JSON Web Tokens) are utilized to provision secure authentication of the conversation between the client and database. Encryption and authentication methods are implemented to fend off unauthorized access whenever necessary. Firebase Security Measures: Firebase Authentication : This system has been designed to be very robust and supports email/password, social providers and additionally it can be used for easy login and user protections. Cloud Firestore Security Rules : Provides means to the developers for writing custom rules to meticulously execute data access by allowing only actuated operations on a particular database. Both services focus on safeguarding information and personal data. On the other hand, between Supabase and Firebase the shift in decision would essentially be whether the project architecture is geared towards the relational SQL-based environment of Supabase or the NoSQL model of Firebase that employs the seamless integration with its services. Conclusion and Recommendations In this wide-ranging study of the Supabase and Firebase services as backend providers for Flutter app development we have delved into the supabase features, benefits and weaknesses. Supabase has an out-of-the-box strength in the open-source space. It closely follows PostgreSQL which is known for its high level of data security and offers real-time updates. This makes it an ideal SQL database for complex queries and projects with a high level of control required. Built on top of Google’s infrastructure, Firebase has everything you want in a full-featured ecosystem and more. It has two types of NoSQL databases, robust authentication features and can be integrated into different services to enable rapid development and scaling of applications. Final Recommendations: Supabase suits developers and projects prioritizing detailed data control and SQL capabilities. Its strength in managing complex relational data and open-source nature makes it suitable for intricate or security-sensitive applications. Depending upon the project needs speedy development, exhaustive documentation and advanced built-in backend services, Firebase is advantageous for its usability, scalability, and timely community support, making it suitable for startups and applications looking to rapidly expand their operations without extensive backend management. The decision between Supabase and Firebase may hinge on the complexity of your data management needs, the pace of your development, and your desired level of control over backend infrastructure. Adrijan Omicevic Adrijan, a seasoned Flutter developer at Q agency, balances his tech expertise with a passion for sports during his off-screen moments. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 29, 2024 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 29, 2024 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Swiss clients visited us during Advent in Zagreb - Tech Consulting and Software Engineering URL: https://q.agency/blog/swiss-clients-visited-us-during-advent-in-zagreb/ Q welcomed Swiss clients to Zagreb’s Christmas market, enjoying festive sights, live music, mulled wine, and traditional Croatian food together. Swiss clients visited us during Advent in Zagreb | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Swiss clients visited us during Advent in Zagreb Swiss clients visited us during Advent in Zagreb January 22, 2019 — 1 min read Work is fine, but after-work is better. After a hard-code day we took our Swiss clients to the best Christmas market in Europe to make up for the Swiss chocolate we got. Together we enjoyed beautiful sights, live music, the sound of Christmas bells, the scent of gingerbread, mulled wine, and various other Croatian delicacies like baked “štrukli” and “sarma” 🙂 Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 22, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 22, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Swiss Projects: Selected Works by Q - Tech Consulting and Software Engineering URL: https://q.agency/blog/swiss-projects-selected-works-by-q/ Explore Q’s selected Swiss projects, from Comparis and Swiss Post to Nestlé Purina, Hilti, and innovative startups across the DACH region. Swiss Projects: Selected Works by Q | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Swiss Projects: Selected Works by Q Swiss Projects: Selected Works by Q April 24, 2019 — 8 min read Croatia and Switzerland are in the same time zone and the flight connections are perfect. We share a similar culture, religion, and customs. For almost 400 years, Croatia was a part of the Habsburg Monarchy, which draws its roots from the Swiss canton of Aargau. To this day, the Swiss — Croatian relations remain strong and we are pleased to say that Q has become a trusted technology partner in Switzerland and the DACH region: Q — Revenue by Market The Q machine runs like clockwork and so do the Swiss. We are proud to support some of the most disruptive Swiss startups, as well as established corporations with global impact. Industry Leaders We Work With Comparis You don’t often get the chance to work on one of the country’s most popular websites, but we were lucky enough to be recognized by Comparis — a giant player in the space of Web platforms, with 80 million visits per year. Their users can easily compare dierent prices across Switzerland, from new iPhone to vehicles and properties, or even insurance providers, banks, telecoms, and hospitals. Comparis.ch — One of the most visited Websites in Switzerland Comparis is a leader in comparison as a service space. Our team is helping develop the Comparis platform — working on both frontend, as well as the backend comparison algorithm, and introducing new features for over 3 years now, and we are motivated as ever to keep on doing so. 3A Composites An engineering company so powerful that they plant their own forests in Ecuador and Papua New Guinea, 3A Composites is a global leader with the broadest portfolio of high-performing and sustainable core materials made of PET foam and balsa wood. The Airex brand is a vital part of the 3AC group. This part of the company specializes in the manufacturing and distribution of the highest quality foam products, like rehabilitation mats, balance pads, yoga mats, and many more. Load YouTube video This video is hosted by YouTube. Loading it lets them set cookies on your device. 3AC has impressive clients: from Airbus & Boeing — to Roger Federer & Cristiano Ronaldo Q helped 3AC, and two of the company’s main brands in their rebranding process, assisting them with the entire corporate identity redesign, new logotypes, product catalogs, and completely new websites. In collaboration with a Croatian branding company Fabular, Q created new brand books, as well as all online and oline company materials. Q was in charge of the UX & UI Design, and the development of the client’s new web presence. Artisa This industry champion is the fastest growing construction company in Switzerland, building 900 new apartments as we speak. With Artisa, we’re currently working on a smart IoT Web and Mobile home apps that want to automate the process of renting and managing the apartments. Artisa Tower in Zurich — Artisa is the Top Growing Swiss Construction Company With our solution, you can reserve and manage the apartment without ever seeing the owner, and furthermore, you can unlock your new home via the app, report malfunctions using the app ticketing system, and even control the cleaning service. This data is cleverly stored and learned from by Artisa, and we’re only talking about stage one of the project. Swiss Post We’ve managed to become a partner of the Swiss Post, helping them establish the Web presence of a company they are backing — Mr. Green. The goal of Mr. Green is truly a noble one. Swiss Post — Mr. Green They are a socially responsible company that provides bags whose contents will be recycled. They also ensure pickup of the bags, employ people with disabilities, form recycling plans to create social added value, and provide meaningful employment. Q definitively aims to be more involved in the technology-for-good movement. Famous Brands We Help Digitalize Nestlé — Purina What do you celebrate on October 4th? If you own a pet, chances are you’ve heard of World Animal Day. For that occasion, together with the amazing crew at Havas Geneve, we’ve built a Web platform for Nestlé’s strongest brand in the industry of pet products (and one of the biggest ones in general). Nestlé Purina — Saint Louis Users were able to tell stories about their pets, share pictures, and much more. By doing that, they’ve entered the competition that had a primary purpose of celebrating the love everyone feels for their pets. This campaign brought Purina amazing results in terms of customer participation, content sharing, and many other relevant marketing metrics. Hilti Although not strictly a Swiss company, Hilti is often viewed as such. This #1 Power Tool company in the world is doing some amazing work worldwide, and we are honored to help out in the process. Our expert team is actively working on the development of their oicial Web portal and Webshop where we’re counting the pages in hundreds. HILTI and Q are partners for over 3 years Also, we are working on their Web and Mobile apps where companies that use Hilti tools have an option to organize their construction site, see which worker is using which machine, have all info about the current state of the project, and organize workers. We’re talking about an ongoing collaboration of 3 years now. KJUS KJUS is one of the most pre-eminent luxury ski-wear companies in the world. This amazing Swiss brand carries the name of Lasse Kjus, a Norwegian skiing legend. To keep up with this heritage, KJUS produces only high-end jackets and complementary equipment for facing rough conditions with style. KJUS marketing eorts are supported by Q Working with KJUS is amazing, every new jacket they produce is a new opportunity for Q to go all out with design and creative suggestions, as well as developing them in the end. Our collaboration so far has resulted in some of the nicest landing pages you can find in the industry, from top-quality golfing jackets like Pro 3L to skiing jackets like Freelite. Many more will come! Startups We Help Grow MaxBrain — University of St. Gallen One of the best stories ever to come out of the Q oices is without a doubt MaxBrain, a spin-o company of the University of St. Gallen, one of the oldest and most esteemed universities in Europe. Together with the amazing Swiss team, Q has built from scratch a “central platform”, which is a learning management system (LMS), as well as an ERP system for their students & sta, where everyone has access to all relevant info. St. Gallen University For instance, students can see their schedule, exams, grades, learning materials; professors can upload their materials, finance can see who paid the tuition, etc. It quickly became a popular LMS & ERP solution which is now sold worldwide to universities and big companies which invest in employee education. We still have 11 people developing the solution full-time and the future is looking bright. Wingtra — ETH Zürich You can only hope to encounter such a group of enthusiastic geniuses, the kind of which we’ve joined forces with at the Autonomous Systems Lab, at ETH Zürich in Switzerland. Wingtra is an ETH Zürich spin-o company with an important mission and the results to back it up — such as the Swiss Excellence Product Award. They are the world’s leading VTOL (vertical take-o and landing) drone producer, with more than 1.000 customer flights already done. The Wingtra drone is powered by two electric motors and it is designed primarily for use in precision agriculture and surveying roles, or for light payload delivery to rural areas. Obviously, we cherish this young and innovative partner of ours, whom we’ve helped establish a strong Web footprint and new projects are on the way. Komed Health This team of Swiss innovators is successfully improving “patient care delivery through intelligent communication. Komed Health is dedicated to transforming healthcare communication to help doctors, nurses, and other healthcare workers to deliver the best in class patient care, and ultimately save lives. Q is proud to be a part of this initiative. Secure and powerful real-time communication platform. Q has formed a dedicated team of frontend and backend developers, led by a project manager, to help this Zürich-based startup hit the needed targets on the technology front. We have a clear and direct relationship with the Swiss team, operating as a single unit, while decisions are made smoothly during the regular sessions we have together. Bitnautic An amazing team of global Fintech experts formed Bitnautic — a decentralized platform based on the Ethereum Blockchain. Its primary purpose is matching the demand and supply of shipping services, for all the industry stakeholders: producers of goods, ship owners, charterers, brokers, importers, and exporters. Load YouTube video This video is hosted by YouTube. Loading it lets them set cookies on your device. BitNautic — The Revolution of Naval Logistics Except using Blockchain technology and the newest solutions in Web development (courtesy of Q), Bitnautic has an AI-based booking system, real-time tracking of ships and cargo, as well as an e-commerce platform. We enjoy working with Bitnautic, currently, we’re developing their Smart Wallet solution and revamping their very Web platform, prior to which we’ve delivered a truly unique landing page and lots of visuals. Keep an eye out for this team! What’s Next? We’re always looking to meet new local industry movers and shakers, don’t be a stranger — our Swiss oice is located at Forchstrasse 84, Zurich. You can always reach out to Q’s Key Account Manager for DACH, yours truly. Adrian Keindl Adrian is mag.oec. who combines his economical profession with his love of tech and the processes involved in building high-end digital solutions. He is a multi-lingual expert and the one who always has a compliment in his sleeve, accompanied by a business offer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 24, 2019 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 24, 2019 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Symfony 5 — The REST, the CRUD and the Swag - Tech Consulting and Software Engineering URL: https://q.agency/blog/symfony-5-the-rest-the-crud-and-the-swag/ Learn how to build a RESTful CRUD API with Symfony 5, covering project setup, Doctrine entities, database migrations, Faker fixtures, and HTTP methods. Symfony 5 — The REST, the CRUD and the Swag | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Symfony 5 — The REST, the CRUD and the Swag Symfony 5 — The REST, the CRUD and the Swag November 28, 2019 — 9 min read In this tutorial I will show you how to install fresh Symfony 5 project and how to make simple CRUD in REST based architecture. REST or representational stateless transfer is an architectural style for APIs wrapped around the user and the resources accessible to them. Stateless — meaning the server doesn’t remember anything about the user who uses the API. CRUD or Create, Read, Update, and Delete are four basic functionalities of an API. Each of them is represented by an HTTP method: POST — Create (insert data) GET — Read (retrieve data) PUT /PATCH — Update (modify data) DELETE — Delete (delete data) I will explain the dierence between PUT and PATCH later in the article, don’t want to spoil the article right at the beginning. Requirements Symfony 5.0 Faker Getting Started First of all, we need the newest Symfony 5.0 skeleton released this month: symfony new project-name or with the PHP dependency manager Composer: composer create-project symfony/website-skeleton project-name Now you can run the command just to check out everything went fine while downloading: symfony server:start This command will give you a link to your Symfony index page something like this: Database and Entity To make our first Entity that we are going to use in this tutorial with the CRUD functionalities we need to require these two commands: composer require symfony/orm-pack composer require --dev symfony/maker-bundle We need to modify DATABASE_URL parameter in .env file. Insert your username and password you have been provided with when installing MySQL server: DATABASE_URL=mysql://username:password@127.0.0.1:3306/database_name?serverVersion=8.0 Now we are ready to execute something very helpful these bundles are oering us to simply trough terminal generates the entity and the repository and that is: bin/console make:entity I made a simple Customer entity with properties: firstName – string lastName – string email – string phoneNumber – string You can see our two new files – Customer.php in Entity folder and CustomerRepository.php in the Repository folder. At the top of the Customer entity class, you can see the annotation for repository class – that means both classes interact with each other and Doctrine gives us an instance of CustomerRepository class when the Customer entity is being used. If you check out CustomerRepository class you can see we have two commented examples of functions fetching dierent data by field. So, if you want to make custom methods for searching, updating, deleting, etc … for your entity, you write it in the Repository class. We will slightly adjust our Customer file in our Entity folder. Above the email variable, add “unique=true”. This means our database won’t accept two of the same emails if they are added to the database: /** * @ORMColumn(type="string", length=255, unique=true) */ private $email; Add one more function at the end of the file called toArray. Function is converting our object to array so we can display it in our JSON response: public function toArray() { return [ 'id' => $this->getId(), 'firstName' => $this->getFirstName(), 'lastName' => $this->getLastName(), 'email' => $this->getEmail(), 'phoneNumber' => $this->getPhoneNumber() ]; } If you are happy with your entity and its functions, we can generate and run our first migration version: bin/console make:migration bin/console doctrine:migrations:migrate And now your database should look something like this: If you’ll ever want to expand your Entities but already have a migration file, no worries. Whenever you make a change to your entity simply run the two commands above the picture and you are good. Mock It Up! For this tutorial, we need some data so we can play around with our CRUD. Enter Faker! With Faker you can add a variety of random information to your database (phone number, emails, first names, last names, etc …). For using fixtures in Symfony run this command and it will generate DataFixtures folder: composer require --dev orm-fixtures Inside you will see AppFixtures.php file that extends Fixtures. We will simply add Faker and a small For loop for adding data to our database like this: class AppFixtures extends Fixture { public function load(ObjectManager $manager) { $faker = Factory::create(); for ($i = 0; $i < 50; $i++) { $customer = new Customer(); $customer->setFirstName($faker->firstName); $customer->setLastName($faker->lastName); $customer->setEmail($faker->email); $customer->setPhoneNumber($faker->phoneNumber); $manager->persist($customer); } $manager->flush(); } } This will then populate our database with 50 records of random customers: bin/console doctrine:fixtures:load Our first (and only) controller Creating Create a CustomerController class in the Controller folder and add annotations to your project so we can adjust our routes: composer require annotations In your CustomerController, we will make a function called addCustomer which is going to do exactly what it’s called. class CustomerController { private $customerRepository; public function __construct(CustomerRepository $customerRepository) { $this->customerRepository = $customerRepository; } /** * @Route("/customers/", name="add_customer", methods={"POST"}) */ public function add(Request $request): JsonResponse { $data = json_decode($request->getContent(), true); $firstName = $data['firstName']; $lastName = $data['lastName']; $email = $data['email']; $phoneNumber = $data['phoneNumber']; if (empty($firstName) || empty($lastName) || empty($email) || empty($phoneNumber)) { throw new NotFoundHttpException('Expecting mandatory parameters!'); } $this->customerRepository->saveCustomer($firstName, $lastName, $email, $phoneNumber); return new JsonResponse(['status' => 'Customer created!'], Response::HTTP_CREATED); } } We have a constructor where we injected CustomerRepository class which we are going to update with a function for saving the data to the database. From the Request , we will get our data and json_decode function makes it into the array so we can add them to our corresponding variables. Before we pass variables to our saveCustomer function we check if they are empty since all our fields in the database are not nullable. In CustomerRepository modify your code like this: class CustomerRepository extends ServiceEntityRepository { private $manager; public function __construct ( ManagerRegistry $registry, EntityManagerInterface $manager ) { parent::__construct($registry, Customer::class); $this->manager = $manager; } public function saveCustomer($firstName, $lastName, $email, $phoneNumber) { $newCustomer = new Customer(); $newCustomer ->setFirstName($firstName) ->setLastName($lastName) ->setEmail($email) ->setPhoneNumber($phoneNumber); $this->manager->persist($newCustomer); $this->manager->flush(); } } We passed our variables from the controller to our saveCustomer function where we set them and, in the end, store them to our database. To try this out, download Postman from the link below: https://www.postman.com And in the end, if everything is okay after your pressed “Send”, the response should be just as the one below the request: Congratulations! You have completed your C out of CRUD. Reading Now we will make a function that will retrieve one of our Customer records from the database when you provide an ID number in URL: /** * @Route("/customers/{id}", name="get_one_customer", methods={"GET"}) */ public function get($id): JsonResponse { $customer = $this->customerRepository->findOneBy(['id' => $id]); $data = [ 'id' => $customer->getId(), 'firstName' => $customer->getFirstName(), 'lastName' => $customer->getLastName(), 'email' => $customer->getEmail(), 'phoneNumber' => $customer->getPhoneNumber(), ]; return new JsonResponse($data, Response::HTTP_OK); } Very simple function and again we use a function that’s in CustomerRepository by default, called findOneBy . Since we are getting an object as a response, we need to separate it into variables. Your postman GET request should look like this (if your link is {host}/customers/2 ): If you want to take another route that will fetch all the Customer records, add this function: /** * @Route("/customers", name="get_all_customers", methods={"GET"}) */ public function getAll(): JsonResponse { $customers = $this->customerRepository->findAll(); $data = []; foreach ($customers as $customer) { $data[] = [ 'id' => $customer->getId(), 'firstName' => $customer->getFirstName(), 'lastName' => $customer->getLastName(), 'email' => $customer->getEmail(), 'phoneNumber' => $customer->getPhoneNumber(), ]; } return new JsonResponse($data, Response::HTTP_OK); } Updating At the beginning of the tutorial I mentioned that I will be explaining the dierence between PUT and PATCH. When you want to update the whole object you should use PUT method, but when you want to partially update an existing object you will use the PATCH method. In this example, I will be using only PUT method but will use some other schemes to see if our object is going to be fully updated. I will make updateCustomer function that receives the ID of customers we want to update and a request with the data we want to modify. Before we pass the variables to our updateCustomer function we have to check if they are empty. The function looks like this: /** * @Route("/customers/{id}", name="update_customer", methods={"PUT"}) */ public function update($id, Request $request): JsonResponse { $customer = $this->customerRepository->findOneBy(['id' => $id]); $data = json_decode($request->getContent(), true); empty($data['firstName']) ? true : $customer->setFirstName($data['firstName']); empty($data['lastName']) ? true : $customer->setLastName($data['lastName']); empty($data['email']) ? true : $customer->setEmail($data['email']); empty($data['phoneNumber']) ? true : $customer->setPhoneNumber($data['phoneNumber']); $updatedCostumer = $this->customerRepository->updateCustomer($customer); return new JsonResponse($updatedCostumer->toArray(), Response::HTTP_OK); } CustomerRepository also needs a new update, the updateCustomer function: public function updateCustomer(Customer $customer): Customer { $this->manager->persist($customer); $this->manager->flush(); return $customer; } Now our Postman is looking like this: This has modified our Customer with ID number one. We changed everything, except his last name. So if you want to check out if your user truly changed in the database, you can use your own function that we wrote earlier getOneCustomer. Deleting The last letter of our CRUD tutorial is ready to be written in a form of function. We want to delete a record from our database. No problem, we will provide our function an ID and it will delete the record for us: /** * @Route("/customers/{id}", name="delete_customer", methods={"DELETE"}) */ public function delete($id): JsonResponse { $customer = $this->customerRepository->findOneBy(['id' => $id]); $this->customerRepository->removeCustomer($customer); return new JsonResponse(['status' => 'Customer deleted'], Response::HTTP_NO_CONTENT); } Almost there – CustomerRepository is missing our removeCustomer function. It’s very simple and probably the smallest function we will write today: public function removeCustomer(Customer $customer) { $this->manager->remove($customer); $this->manager->flush(); } Try it out with your Postman request! Delete any number you like between 1 and 50. Or delete them all, I leave it up to you. Swagging Swagger is an Open Source API documentation tool that can, in an easy way help you test and document your APIs. If you document your controllers and functions the way Swagger understands it, he will automatically generate a testable list of your endpoints. Unfortunately, Swagger is not yet compatible in Symfony 5.0 version due to the requirements of other components that are provided automatically with a framework (framework-extra-bundle). But I will make sure to keep this up to date when a new version of NelmioAPI comes out. In the meantime, you can find the whole project here: https://github.com/LukaGado/Symfony5---The-REST-the-CRUD-and-the-Swag Thanks for reading! Luka Gado Though he has worked in Swift and C#. His expertise lies in back-end development using the most popular PHP framework, Symfony. He has a passion for solving problems, continually perfecting his craft. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 28, 2019 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 28, 2019 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Symfony and RabbitMQ - Tech Consulting and Software Engineering URL: https://q.agency/blog/symfony-and-rabbitmq/ Learn how to integrate RabbitMQ with Symfony to improve web application performance using queues and asynchronous messaging. Symfony and RabbitMQ | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Symfony and RabbitMQ Symfony and RabbitMQ November 20, 2019 — 5 min read For boosting up the performances of your web applications to the maximum we often need to use some sort of queues to perform time-consuming tasks. One of the best examples for doing that is RabbitMQ . RabbitMQ is lightweight and easy to deploy on-premises and in the cloud. It supports multiple messaging protocols. In this short tutorial, we will be setting up a fresh Symfony 4.3 project with RabbitMQ and show a few examples of using them in distributing payloads to dierent users — messaging application. Why RabbitMQ? Reliability — Oering a variety of features including a performance with minimum loss and persistence. Flexible Routing — Before messages come to the queue they are routed through exchanges. Exchanges are used for typical routing logic. Clustering — Several RabbitMQ servers on a local network can be clustered together, forming a single logical broker. Federation — For servers that need to be more loosely and unreliably connected than clustering allows, RabbitMQ oers a federation model. Multi-protocol — Variety of messaging protocols — AMQP 0–9–1, STOMP, MQTT, AMQP 1.0, HTTP and WebSockets. Requirements Symfony 4.3 RabbitMQ Bundle Symfony Annotations Faker Rabbit Server Getting Started To get you started to create a new Symfony 4.3 project using Symfony command in the terminal: symfony new project-name or with the PHP dependency manager Composer: composer create-project symfony/website-skeleton project-name Inside your newly created Symfony project open up the terminal and install the RabbitMQ bundle using this command: composer require php-amqplib/rabbitmq-bundle This will also create a folder called “Consumer” which we can delete since we will be organizing our folders dierently. For easier route defining Symfony allows you to use annotation routes instead of defining them in YAML file: composer require annotations And Faker for easy creation of mocked data for our messages: composer require fzaninotto/faker We need a RabbitMQ server now. We will set it up locally (don’t worry its easy). For MacOS we will use homebrew . brew update brew install rabbitmq export PATH=$PATH:/usr/local/opt/rabbitmq/sbin rabbitmq-server (to start the server) Your RabbitMQ dashboard is available at: http:// http://localhost:15672/ You can access your dashboard with username and password “guest”. In the folder, you will find an environment file .env with already automatically added variable for connecting to the localhost RabbitMQ server. ###> php-amqplib/rabbitmq-bundle ### RABBITMQ_URL=amqp://guest:guest@localhost:5672 ###< php-amqplib/rabbitmq-bundle ### Automatically when RabbitMQ bundle was installed you will also get a configuration file stored in /config/packages/ called old_sound_rabbit_mq.yaml old_sound_rabbit_mq: connections: default: url: '%env(RABBITMQ_URL)%' read_write_timeout: 4 heartbeat: 2 producers: messaging: connection: default exchange_options: { name: 'qMessages', type: direct } consumers: messaging: connection: default exchange_options: { name: 'qMessages', type: direct } queue_options: { name: 'qMessages'} callback: message_service enable_logger: true producer — Sending the message to the broker. consumer — Receiving the messages. heartbeat — AMQP 0–9–1 oers a heartbeat feature to ensure that the application layer promptly finds out about disrupted connections (and also completely unresponsive peers). Heartbeats also defend against certain network equipment which may terminate “idle” TCP connections. There are also four types of exchange options we can give to our configuration file: direct — sent directly to the written queue fanout — to all the queues headers — sent to queue based on the headers property topic — sent to one or more queues based on a correspondence between the routing key and the routing pattern Now we need to set up the “qMessages” exchange on our Rabbit server. We can do that with the following command php bin/console rabbitmq:setup-fabric Your RabbitMQ Management Dashboard should look like this now. The only thing left to do before we can send our message is binding our producer service to a class. In old_sound_rabbit_mq.yml file add “class” to the producer like this: producers: messaging: class: AppRabbitMessagingProducer connection: default exchange_options: { name: 'qMessages', type: direct } In your services.yaml we need to register both Consumer and Producer: message_service: class: AppRabbitMessageConsumer AppRabbitMessagingProducer: '@old_sound_rabbit_mq.messaging_producer' Now create a new folder called Rabbit and inside create a new class called MessagingProducer with an empty body. We will keep this very simple, so our class looks like this: Sending your first message! Let’s start by making a MessageService class in our service folder. messagingProducer = $messagingProducer; } public function createMessage(int $numberOfUsers): JsonResponse { $faker = Factory::create(); for ($i=0; $i<$numberOfUsers; $i++) { $message = json_encode([ 'sender' => $faker->companyEmail, 'receiver' => $faker->email, 'message' => $faker->text, ]); $this->messagingProducer->publish($message); } return new JsonResponse(['status' => 'Sent!']); } } We have injected our MessagingProducer class with the empty body mentioned above. Also, we created the createMessage with Faker Factory used for mocking up our data depending on our. A simple function for creating our messages that will be sent to the queue. Now we can make our MessageController in the Controller folder and add a function called sendMessage. With the annotation add the route with the slug “numberOfMessages” in the URL. messageService = $messageService; } /** * @Route("/send-message/{numberOfMessages}", name="send_message", methods={"GET"}) */ public function createMessages($numberOfMessages): JsonResponse { $this->messageService->createMessage($numberOfMessages); return new JsonResponse(['status' => 'Sent!']); } } In terminal write the command: symfony server:start and now just go to the link the server provided you: http://127.0.0.1:8000/send-message/2 And voila! You have successfully sent two random generated messages to your queue! Let’s Consume our messages! When I say Consume, I mean we actually want to collect them from our Rabbit queue and process them the way we want. Here we will define a simple class for collecting and showing our messages from the queue. body, true); echo 'Received a message from '.$message['sender']; } } Now we need to run the command for initiating our function for collecting and displaying messages in our terminal: php bin/console rabbitmq:consumer messaging In your terminal, all the messages that are displayed are automatically deleted from the queue unless you define them dierently with “durable” property. Now you can start being artistic and try out something else with the consumed messages. For example, saving the consumed messages to the database. Consume half a million messages and time the execution of your script — You will be surprised, or simply just start by using RabbitMQ in your applications. For full source code visit — https://github.com/LukaGado/ra… Luka Gado Though he has worked in Swift and C#. His expertise lies in back-end development using the most popular PHP framework, Symfony. He has a passion for solving problems, continually perfecting his craft. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 20, 2019 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 20, 2019 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Symfony Notifications and Their Security - Tech Consulting and Software Engineering URL: https://q.agency/blog/symfony-notifications-and-their-security/ Learn how to enhance Symfony backend apps with SMS and Slack notifications as well as how to fortify security with phone number verification. Symfony Notifications and Their Security | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Symfony Notifications and Their Security Symfony Notifications and Their Security November 21, 2023 — 2 min read In this article, you’ll learn more about enhancing Symfony backend applications with SMS and Slack notifications as well as fortifying security with phone number verification. The development of the REST API itself, which is used for creating and retrieving data, is no longer enough. Modern backend applications have progressed, and through the integration of various services, they enrich the experience of use and allow you to enhance the usage of your application. One of the ways in which we can expand our application is by using notifications. They can be sent and triggered for a variety of reasons: diverse reminders, delivery updates, emergency alerts, etc. The Symfony Notifier component provides sending notifications through different channels. This blog will show you how to send SMS or Slack notifications and how to verify the user’s phone number. SMS Notifications For supercharging Symfony applications with SMS notifications, Twilio takes the center stage as our primary tool, a robust platform designed for delivering real-time SMS notifications to mobile phones. First, let’s include the necessary package. We do that with: composer require symfony/twilio-notifier Running this command will create a new notifier.yaml configuration file and add a new variable to the environment file. TWILIO_DSN=twilio://ACCOUNT_SID:AUTH_TOKEN@default?from=FROM As we can see, we need some data to fill in from our twilio account. Let’s head to Twilio website and register a new account. After logging in, we land on the homepage console. Under the account info section let’s take necessary data and copy these values to the .env file. It’s time to send our first SMS using the Symfony application. Service method is presented. It takes two parameters: the message that we want to send and the phone number to which message will be sent. /** * @throws TransportExceptionInterface */ public function sendSmsMessage(string $content, string $phoneNumber): SentMessage|null { $sms = new SmsMessage( // the phone number to send the SMS message to $phoneNumber, // the content of the message that will be sent $content, ); return $this->texter->send($sms); } The send () method returns a SentMessage variable that contains information about the message ID and its original contents. To test this method, we can use a simple console command that receives a message and the mobile number to send to. setName('app:send-sms-notification') ->setDescription('Send an SMS message') ->addArgument('content', InputArgument::REQUIRED, 'The content of the SMS message') ->addArgument('phoneNumber', InputArgument::REQUIRED, 'The phone number to send the SMS to') ; } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $content = $input->getArgument('content'); $phoneNumber = $input->getArgument('phoneNumber'); $this->smsNotificationService->sendSmsMessage($content, $phoneNumber); $io->success('SMS message sent successfully.'); return Command::SUCCESS; } } after running the command with: php bin/console app:send-sms-notification The mobile phone received the message successfully. Slack Notifications This section will demonstrate how to send a message from a Symfony application to Slack in a simple way. This will help illustrate how those delightful Peakon surveys or notifications from Google Calendar find their way to your Slack. The first step is to include the necessary package: composer require symfony/slack-notifier Running this command will add a new variable to the environment file. SLACK_DSN=slack://TOKEN@default?channel=CHANNEL To send messages on Slack, of course we first need a Slack workspace, a test one was created for the needs of the blog. The next step is to create a Slack app that will be assigned certain actions within our workspace. Once the app is created in the OAuth & Permissions section, assign scopes to it and then install it into Workspace. After installation, we will receive a Bot User OAuth Token that will allow us to link our backend application with the Slack workspace. Let’s retrieve the token and update the corresponding value in the environment variable. More detailed installation instructions can be found in the official documentation . Adding Slack notifier also brings some additional configuration to the notifier.yaml file. # config/packages/notifier.yaml framework: notifier: chatter_transports: general: '%env(SLACK_GENERAL_DSN)%' random: '%env(SLACK_RANDOM_DSN)%' Here we define transports and when sending a message, there is an option to choose what transport will be used. This allows us to control the Slack channel to which specific messages are sent. If not explicitly set, the message will be sent using the default transport, the first one configured. Sending Slack messages from the Symfony application is then as simple as it gets. A service method is presented. It takes two parameters: the message and transport which will be used to send it. /** * @throws TransportExceptionInterface */ public function sendSlackMessage(string $content, string $transport): SentMessage|null { $message = (new ChatMessage($content))->transport($transport); return $this->chatter->send($message); } It’s time to test sending a message to the general channel. For this purpose, a console command which calls the service method was created. setName('app:send-slack-notification') ->setDescription('Send a Slack message') ->addArgument('content', InputArgument::REQUIRED, 'The content of the message') ->addArgument('destination', InputArgument::REQUIRED, 'The Slack channel'); } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $content = $input->getArgument('content'); $destination = $input->getArgument('destination'); $this->slackNotificationService->sendSlackMessage($content, $destination); $io->success('Slack message sent successfully.'); return Command::SUCCESS; } } Let’s execute it with: php bin/console app:send-slack-notification "Whatever the Q, We got the A." "general" As shown in the picture, the message has reached the general channel successfully. Importance of phone number verification A phone number isn’t just any number, it’s a unique identifier linked to a person. Unlike email addresses that can be easily created and kept anonymous, phone numbers are usually associated with a person’s identity. This connection helps prevent duplication and fraud, making them essential for establishing trust, security, and responsibility in various applications. It can be significant in a scenario that involves account recovery, or forgetting passwords. Having a phone number that is verified is a reliable method for recovering an account. After examining the benefits, let’s move on to implementing phone verification within the Symfony framework. We must include a package that will help us with the verification process. Run: composer require twilio/sdk After that, construct a configuration that will enable us to automatically autowire the Twilio client into service class. # config/services.yaml services: app.twilio_client: class: TwilioRestClient arguments: ['%env(ACCOUNT_SID)%', '%env(AUTH_TOKEN)%'] TwilioRestClient: '@app.twilio_client' In order to use the verification service inside the app, we must also have the verify service token. The official documentation page provides more information on how to issue this token. Now everything is ready to be utilized. The following is the implementation of the service that can be used for number verification. Using the send verification code method, a unique code is sent via SMS to a mobile phone. The second method serves to check and verify the mobile number. Based on the number and unique code provided, it determines if the code sent to the specified phone number matches the given code. twilioClient ->verify->v2->services($this->verifyServiceSid)->verifications ->create($phoneNumber, 'sms'); } public function checkVerificationCode(string $phoneNumber, string $code): VerificationCheckInstance { // Check if the verify code corresponds to send one return $this->twilioClient ->verify->v2->services($this->verifyServiceSid)->verificationChecks ->create(['Code' => $code, 'To' => $phoneNumber]); } } Let’s perform the action of sending verification code. Let’s pass the code to the second method. A status attribute is included in an instance of the verification check that is returned. Successful verification is indicated when this status matches the approved state. That allows us to proceed with further actions such as setting the verified flag in the database. if ($verificationCheckInstance->status === 'approved') { // Take various actions here, suggested is to mark the user's phone as verified. $user->setPhoneVerified(true); } Conclusion We’ve seen how simple it is to set up and use notifications in Symfony. This blog post showcased Slack and SMS, but there are also other channels for sending notifications like Nexmo, Amazon SNS, LinkedIn, Telegram, Twitter and so on. We also demonstrated how to verify a mobile phone number in a safe way to ensure that communication remains trustworthy. Marko Car Marko is a backend Symfony developer who works on various projects within Q. When he gets the chance, he likes developing his skills even further, and currently holds the Zend PHP Engineering Certificate as well as the AWS Certified Cloud Practitioner Certificate. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 21, 2023 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 21, 2023 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Symfony Rapid Development with API Platform - Tech Consulting and Software Engineering URL: https://q.agency/blog/symfony-rapid-development-with-api-platform/ Faster Symfony development process using the API Platform. See tips and tricks with the API Platform and learn how to create CRUD endpoints. Symfony Rapid Development with API Platform | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Symfony Rapid Development with API Platform Symfony Rapid Development with API Platform July 17, 2025 — 4 min read API Platform is a stable, easily scalable, next-generation, open-source web framework (set of tools to build and consume web APIs) designed to easily create API-first projects without compromising extensibility and flexibility. API Platform is built on top of Symfony , and it benefits from its ecosystem and provides a wide range of content negotiation (GraphQL, JSON-LD…). The server skeleton includes the famous Symfony framework and the Doctrine ORM . This scaffolding tool supports the most popular JavaScript libraries. The development environment and the deployment mechanism leverage Docker, Kubernetes, and Helm. There are many times when we are developing a project, we waste lots of time by creating routes and endpoints with many custom controllers. This approach leads to rapid development and facilitates the development process. Now, we don’t have any controllers – they aren’t needed. In particular, it can be tedious to repeat the process. For simple CRUD cases , it’s letting you skip all the boilerplate you would need to repeat over and over again. Essentially, the core of the API Platform handles the infrastructure part of your API. You design the input and output data structures as a set of PHP classes . Then the library uses these classes to handle transform JSON (or any other format) documents to PHP objects, back and forth. As you pointed out, it also generates the OpenAPI, Hydra, and JSON Schema specs corresponding to these classes. The main purpose of the API Platform instantly provides a fully featured read/write API with REST operations, data validation, grouping, pagination, sorting, filtering, an authorization system (easy authentication management with JWT or OAuth), and automatically generated API documentation (Swagger/OpenAPI). In the beginning, it was conceived for creating simple applications. With newer versions leverage the awesome features of the tool to develop complex and high-performance API-first projects . The API Platform has improved a lot for building Progressive Web and Native Mobile apps. The API Platform is an incredible achievement in software engineering. It gives you a huge amount of functionality out of the box but is also fully extensible because it is (mostly) well-built . I’d go as far as saying it’s one of the strongest reasons to use Symfony over other frameworks today (and even as far as saying it’s one of the strongest reasons to use PHP over other ecosystems today). Here you can look down the API Platform Documentation . Technical Requirements Before creating your first Symfony application with API Platform, you have to install: PHP 8.1 Symfony 6.1 API Platform 3.0 Composer 2.2.3 MySQL or PostgreSQL It’s super easy to install with docker, in our case we will create a classic composer installation with the Symfony framework. Getting Started To discover how the framework works , we will be creating an API to manage articles with authenticated users. Use the following commands to create your project: composer create-project symfony/skeleton q_agency_rapid_development_app The core library includes all necessary bundles like doctrine ORM: a powerful ORM set of PHP libraries primarily focused on database storage and object mapping. composer require api API Platform has The Schema Generator , a command line tool part of the API Platform framework that instantly generates a set of PHP classes from RDF vocabularies. In our case we are going to install a Symfony helper library called MakerBundle , additionally to speed up the development process. This bundle is the fastest way to generate the most common code you’ll need in a Symfony app: commands, entities, form classes, event subscribers, and more. composer require --dev symfony/maker-bundle Dependencies are prepared, let’s configure a database. You can find and customize this in the .env file. Just uncomment the environment variable called DATABASE_URL and set your database name, user, and password. Now that your connection parameters are set up, use this command to create the database in your relational database management system: php bin/console doctrine:database:create Now, we are ready to create some endpoints with the API Platform. Or just clone the GitHub repository and follow the steps from the READMI.md file API Platform In this example, we will show how the API Platform works and what you can do. The Idea of this project is a fast development with this tool. After creating your database, we are ready for development . Our first step is creating a category entity with some properties. Here is an example of mapping using annotations. id; } public function getName(): ?string { return $this->name; } public function setName(string $name): self { $this->name = $name; return $this; } } Create a categoryRepository.php file and add an extended ServiceEntityRepository service for doctrine like this: ['article:get', 'article:category', 'category:get']], denormalizationContext: ['groups' => ['article:create']], processor: ArticleCreateProcessor::class), new Put('articles/set-all-discounts', openapiContext: ['summary' => 'Set all discounts for specific category' ], denormalizationContext: ['groups' => ['article:discount:put']], processor: ArticleSetDiscountsProcessor::class), new Get('articles/highest-price', openapiContext: ['summary' => 'Retrieve highest price article'], provider: ArticleProvider::class), new Get('articles/reset-all-discounts', openapiContext: ['summary' => 'Reset discounts to null'], provider: ArticleResetAllDiscountsProvider::class), new Get(normalizationContext: ['groups' => ['article:get', 'article:category', 'category:get']]), new GetCollection(), new Delete() ], )] #[ApiFilter(SearchFilter::class, properties: ['name' => 'partial'])] class Article { public const DISCOUNT_DEFAULT_VALUE = null; public const DEFAULT_CURRENCY = ' This is where the problem comes in. How to add a setter automatically and store records in the database? With an API Platform code definition like from a category.php file, it’s impossible. But don’t worry, just migrate this relationship. To be fully prepared create ArticleRepository.php that interacts with a DB with methods containing your query logic can then be stored in this class. createQueryBuilder('a') ->select('a, MAX(a.price) AS HIDDEN max_score') ->groupBy('a.id') ->setMaxResults(1) ; return $q->getQuery()->getOneOrNullResult(); } public function save(Article $article): void { $this->_em->persist($article); $this->_em->flush(); } } Then articleService.php where the business logic lives repository = $repository; } public function getArticlesByCategoryId(Category $category): array { return $this->repository->findBy([ 'category' => $category, ]); } public function updateDiscountsByCategory(Category $category, int $discountPercentage): array { $articles = $this->getArticlesByCategoryId($category); /** @var ?Article $article */ foreach ($articles as $article) { $article->setDiscountPercentage($discountPercentage); $this->repository->save($article); } return $articles; } public function resetAllDiscounts(): void { $articles = $this->repository->findAll(); /** @var ?Article $article */ foreach ($articles as $article) { $article->setDiscountPercentage(Article::DISCOUNT_DEFAULT_VALUE); $this->repository->save($article); } } } In the next examples, we are talking about STATES for manipulating and retrieving data with our logic. API Platform makes it easy to create custom state providers and processors. State Processor To mutate the application states during POST, PUT, PATCH, or DELETE operations, API Platform uses classes called state processors that provide ‘out of the box’ custom business logic and computations to trigger before or after persistence (ex: mail, call to an external API…). If no operation is specified, all default CRUD operations are automatically registered. It is also possible – and recommended for large projects – to define operations explicitly. Keep in mind that once you explicitly set up an operation, the automatically registered CRUD will no longer be. If you declare even one operation manually, such as #[GET], you must declare the others manually as well if you need them. State processors receive an instance of the class marked as an API resource (usually using the #[ApiResource] attribute). This instance contains data submitted by the client during the deserialization process. A state processor using Doctrine ORM is included with the library and is enabled by default. It is allowed to persist and delete objects that are also mapped as Doctrine entities. A project can include as many state processors as needed. Our first processor should be applied to create an article endpoint . Without them, we can’t add some custom logic because we need to set a default currency to the article before persisting. If you want to execute custom business logic before or after persistence, this can be achieved by decorating the built-in state processors. Even with service autowiring and autoconfiguration enabled, you must still configure the decoration: Creating a Custom State Processor with MakerBundle with the name ArticleCreateProcessor bin/console make:state-processor The logic of state processors is the responsibility of application developers and is out of the API Platform’s scope. Open the file and modify the code like this: decorated = $decorated; } public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []): Article { if (!$data instanceof Article) { throw new InvalidArgumentException('Invalid object type'); } $data->setCurrency(Article::DEFAULT_CURRENCY); return $this->decorated->process($data, $operation, $uriVariables, $context); } } We will call the behavior of the built-in ArticleCrateProcessor service in the API Platform registered endpoint in the POST method with a preprocessor magic method . As you can see in the article file, we added ArticleCreateProcessor, normalizationContext (post-process objects created from the payload sent in the HTTP request body), and denormalizationContext (customize the resource sent to the client) with specific groups. Just another example of a state processor is updating discounts of multiple articles with our definition of URI template and a group of properties necessary for our service. getCategory(); $articles = $this->articleService->updateDiscountsByCategory($category, $data->getDiscountPercentage()); return new ArrayCollection($articles); } } State Provider To retrieve data exposed by the API, the API Platform uses classes called state providers . A state provider using Doctrine ORM to retrieve data from a database, These state providers natively support paged collections and filters. We added SearchFilter in the article class, you will see it applied to our GetCollection() endpoint automatically. For more information, check Filters – API Platform documentation. Let’s retrieve the article with the highest price value with our custom logic: articleRepository = $articleRepository; } public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null { /** @var ?Article $article */ $article = $this->articleRepository->getHighestPriceArticle(); return $article; } } Usually, for persisting data, we create processor states. Usually, clients send a request body for manipulating data But it doesn’t necessarily mean that we are not able to do it ‘out of the box’ with providers using the GET method . We will reset discounts to null for all articles: service = $service; } public function provide(Operation $operation, array $uriVariables = [], array $context = []): JsonResponse { $this->service->resetAllDiscounts(); return new JsonResponse(data: ['Articles discount reset successfully'], status: Response::HTTP_OK); } } To the end, I will leave a challenge for the reader to add a new bool property name like active (default true) and implement a state processor for the existing Delete() endpoint , and instead of deleting the article, you will set active to false and persist it. Conclusion API Platform is a powerful tool for creating rapid applications where you don’t care about pagination, filtering, annotations, and creating custom classes for simple endpoints . API Platform generates it all for you. At first, it’s a little complicated to use this, but with long-term use , you will have a crush on this library. I consider you find it worthwhile to understand the underlying details before delving into the many additional tools that provide. The point is to understand the concept of API Platform (the difficulty of debugging when something doesn’t work out as wished because of something in its internal magic) and the most important thing of all is separating business from a persistence layer for reusable coding that will not cause trouble. After this blog, you won’t be without an API Platform anymore. I hope this article will help you improve your skills, and in the future, you will use this awesome tool for creating apps. You can find and clone extended project source code on the GitHub repository with examples of Data Transfer Objects (DTO), operations naming, enumeration, and more complex code. Thanks for reading! Zlatko Spajic GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 17, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 17, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Tackling the Top 10 Resourcing Challenges at Q - Tech Consulting and Software Engineering URL: https://q.agency/blog/tackling-the-top-10-resourcing-challenges-at-q-agency/ Explore the challenges of resourcing coordination at Q: from navigating scheduling conflicts to strategies that guide us towards success. Tackling the Top 10 Resourcing Challenges at Q | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Tackling the Top 10 Resourcing Challenges at Q Tackling the Top 10 Resourcing Challenges at Q April 10, 2024 — 11 min read Explore the challenges of resourcing coordination at Q agency: from navigating scheduling conflicts to strategies that guide us towards success. Imagine this: News of a new development project hits our desks, set to kick off in a week. The catch? The team still needs to be assembled, the window to identify the ideal team members is incredibly narrow, and the client’s technical requirements remain a moving target. Navigating through these challenges requires more than just a good sense of direction; it demands agility, strategic planning, and clear communication. The Resourcing team is the one thriving on these challenges, turning problems into opportunities, and we look forward to giving you a glimpse into our daily lives. This post builds on the foundational insights shared in the first blog – from detailing our day-to-day operations to showcasing our team’s purpose and development. With this blog, we aim to dive deeper into the heart of resourcing, revealing the challenges we face daily, the strategies we use, and the significant effect our work has on the overall success of the company. As we continue to explore the science behind resource management, we invite you to join us in discovering all the fine details of planning in the unpredictable IT world. 10 Core Challenges in Resourcing Resource Availability and Scheduling Conflicts Coordinating more than three hundred resources with overlapping project timelines is a demanding operation requiring us to be prepared to act swiftly. The challenge grows with unexpected project extensions or urgent client requests. Ensuring the availability of skilled staff when and where they’re needed calls for detailed planning and a deep understanding of each team member’s skills and workload. Testing our ability to plan ahead, we adapt to ensure that every project has the resources it needs to start and succeed without overburdening the team. Skill Matching and Workforce Evolution ⁤At Q agency, the core of resource coordination is the careful alignment of our internal talent pool with the unique technical requirements of each project and client. ⁤⁤This goes beyond just the skill-matching process, it involves the maintenance of a comprehensive, constantly updated database of every team member’s skills and expertise levels. This is achieved in close collaboration with line managers of every team member. ⁤⁤This database is pivotal in meeting the ever-evolving demands of our projects, allowing us to answer to changes with agility. ⁤ ⁤Anticipating future resourcing needs is key to our strategy, highlighting the crucial role of our partnership with the Talent team. ⁤⁤They’re the ones to thank for finding external talent, filling any gaps, and ensuring we’re ready for new projects in case we don’t internally have anyone that fits the requirements. Dynamic Project Requirements ⁤Every project at Q begins with a vision, however, the journey to completion is rarely straightforward. ⁤⁤Scope changes are a regular part of our daily workflow, demanding flexibility in finding a solution. ⁤⁤Adapting to these modifications without affecting other projects or our set utilization goals demands a dynamic and responsive strategy. ⁤⁤Most times, it comes down to being ready to adjust quickly, ensuring we always have the right mix of resources ready to address the frequent demands of our projects. ⁤ ⁤A common scenario explaining this challenge is when, for example, a designer is required to stay on a project longer than initially anticipated, potentially conflicting with future assignments. ⁤⁤Similarly, if a developer concludes their role in a project sooner than expected, it can lead to unplanned downtime and unbillable hours. ⁤ ⁤Adding to the complexity is when the details for a role in upcoming projects remain undefined due to unclear client requirements. ⁤⁤In such cases, further investigation with the Business Development or Presales team is necessary to get a more detailed description of what the client expects. ⁤ Balancing Priorities Juggling multiple projects and determining which gets priority involves complex decision-making. Factors like project duration, growth potential, and the nature of the client relationship play crucial roles. Your Turn to Decide: Imagine you’re a part of the Resourcing team. Here’s a challenge for you: Would you prioritize adding team members to a dedicated team of 30+ people for a long-standing, respected client we’ve worked with for over two years? Or would you kickstart an exciting discovery project requiring 5 team members in a new industry with significant growth potential? This decision highlights the real-world dilemmas faced in resource management. What’s your pick and why? Managing Tight Deadlines The title says it all – time is money, so time is of the essence. Acting quickly on resource allocation decisions can make all the difference between success and setback. Every day’s delay translates into lost opportunity and financial impact. That’s why being in sync with the finance department also plays a big role in our set of responsibilities. Ensuring Efficient Information Flow Good resource coordination depends on clear communication between all departments, from production development to finance, and talent to project management. It’s important to stay up to date on everything that could possibly impact team allocation and utilization. Some of the information we need to be able to make a move are updates on upcoming projects, new hires, skill progression of team members, and someone’s satisfaction with their current workload or project. It’s a detailed process of sharing information, where every piece of information makes a difference. The Necessity of Backup Plans ⁤Every project would unfold precisely as initially planned in an ideal world, however, reality often proves different. ⁤⁤Having multiple fallback plans along with one master plan is not just advisable; it’s essential. ⁤⁤Each alternative comes with its own set of prerequisites and dependencies that align through time like a Tetris game where we try to fill in as many gaps as possible. Keeping Reports Up to Date The challenge lies in making our reports accurate and reflective of the current situation within the ever-changing environment. Most reports will show the utilization of resources and current status on the bench and all ongoing projects. Such a level of accuracy ensures that decision-makers at Q have the most relevant information at their fingertips enabling them to make important decisions swiftly. ⁤For example, a typical morning might begin with two React developers ready to be assigned to new projects. ⁤⁤However, by the end of a series of strategic meetings, these same developers could be fully allocated, resulting in us turning to our colleagues in the Talent team in hopes of bringing someone new to the team. ⁤ ⁤Maintaining this level of accuracy requires a blend of technology and tool utilization, process discipline, and a proactive update culture within the team that we like to nurture. ⁤ Always Seeking a Win-Win Situation Balancing project demands with employee wellbeing presents a unique challenge. While we may not be directly responsible for overseeing employee wellness, being aware of our team’s aspirations, needs, desires, and satisfaction plays a big role in planning. Overallocation can lead to burnout, threatening both project outcomes and employee retention. Our goal is to manage workloads effectively in hopes of facilitating healthy work-life balance in collaboration with line managers and those responsible for employee wellbeing. Cultivating Team Harmony ⁤Technical skills are just one piece of the puzzle, how team members interact with each other can significantly influence a project’s outcome and overall satisfaction that affects efficiency. ⁤⁤Ensuring a good cultural fit and positive team dynamics is crucial for creating an environment where everyone can thrive. ⁤It’s something we like to call quality resourcing. We try to practice this approach as frequently as possible when the limited availability of resources permits it. To make this happen, we primarily collaborate with line managers in production and project managers to optimize team composition as effectively as possible. Strategy Meets Challenges ⁤To successfully tackle all challenges listed previously, we have four core strategies that are essential in day-to-day operations. ⁤⁤These strategies enable us to be prepared not just for what’s around the corner today but to actively participate in shaping future plans. ⁤ We aim to maximize the potential of advanced planning tools⁤ for resource management, project oversight, and communication. ⁤⁤Beyond using these tools for project allocation, tracking people’s availability, time logging, and reporting on various metrics, we constantly seek to enhance these processes by integrating the tools via API. ⁤⁤These integrations offer better visibility for the future and save great chunks of time. ⁤⁤Key tools in our arsenal include Ganttic, Teamwork, Slack, and internally developed apps. ⁤ Our skills database is crucial for keeping an eye out for available technologies within Q, ensuring quick matches between project requirements and technical expertise. ⁤⁤This precision is achieved through regular updates from line managers responsible for performance reviews and skills assessments, providing a view of our team’s capabilities and growth. ⁤⁤We have this data updated directly in our resource planning tool which enables us to use various views, filters, grouping, and reports to pinpoint the right talent for new projects. ⁤ ⁤Having an agile approach is our motto for thriving in the world of unpredictability. ⁤⁤Remember the importance of having multiple fallback plans? ⁤⁤Well, this strategy equips us with the speed and flexibility to act swiftly, no matter the challenge. ⁤ ⁤Streamlining communication is something that enables our team to act like one and a steady flow of information ensures perfect harmony among team members. ⁤⁤This open dialogue is crucial, ensuring quick decision-making and synchronization. ⁤⁤Regular weekly syncs with line managers, directors, and other colleagues, along with established communication channels, empower us to thrive in this dynamic environment. ⁤ Can’t Anyone Allocate Resources? In smaller agencies, it’s common for individuals responsible for various tasks to take on resource allocation responsibility alongside their primary roles. Project managers, product owners, key account managers, and team leads often find themselves juggling their core responsibilities with the complex demands of matching project requirements with the right talent. While this approach might seem manageable on a smaller scale, it’s a practice that can stretch resources thin, resulting in lower efficiency and visibility. Introducing a dedicated resourcing team in a larger agency drastically changes this dynamic. It allows those who have been doubling their roles to refocus on their areas of expertise. Project managers can dedicate more time to guiding their teams and overseeing project milestones. Product owners can fully immerse themselves in user needs and product strategy. Key account managers can concentrate on nurturing client relationships, and team leads can invest more time in mentoring their team members. The necessity of a dedicated resourcing team becomes apparent in larger agencies, where its absence can be felt as a critical gap. Making the strategic choice to establish such a team ensures operational excellence and enables every professional to thrive in their specific domain. The real question is about maximizing effectiveness, allowing each team member to contribute their best. Conclusion Diving into the top 10 resourcing challenges at Q agency, we’ve seen just how tricky but ultimately rewarding planning resources can be alongside all other tasks that we do in administration and process building. The journey through scheduling clashes, finding the perfect skill sets, rolling with project changes, and keeping reports up to date shows the real need for a savvy, dedicated resourcing team. This team is all about more than just assigning people to projects. We’re continuously trying to build a solid backbone that keeps the agency’s goals sailing smoothly while having multiple fallout plans if the initial one doesn’t work. With resource coordination in our hands, project managers, team leads, and other colleagues get to dive deep into what they do best, boosting outcomes across the board. Bringing in advanced planning tools, keeping an eye on our skills inventory, staying agile, and keeping everyone in the loop have totally changed the game for us. It proves that while figuring out all the moving parts can get complex, the impact is great. Amid constant shifts, our resourcing team has grown from just filling spots to becoming key strategic partners, helping to steer Q’s future at every turn. So, can just anyone allocate resources within a larger agency? Going through resourcing challenges that we’ve tackled at Q, the answer’s a reassuring nope. It takes a team equipped with the right tools, insights, and strategies to turn these challenges into victories. As we move forward, the resourcing team will continue to be the cornerstone of problem-solving, ensuring that we not only meet the demands of today but are also well-prepared for tomorrow’s opportunities. Marija Donkov Since summer 2021, I've been a part of Q, diving headfirst into the exciting world of Resourcing right after graduation. My happiest moments are those rare times when my inbox hits zero at the end of the day and the tools are perfectly updated, feeling like a small victory in the vast universe of resource management. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 10, 2024 — 11 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 10, 2024 — 11 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # TDD in Flutter With Example Application Using Riverpod and Firebase - Tech Consulting and Software Engineering URL: https://q.agency/blog/tdd-in-flutter-with-example-application-using-riverpod-and-firebase/ TDD in Flutter using Riverpod and Firebase TDD in Flutter With Example Application Using Riverpod and Firebase | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > TDD in Flutter With Example Application Using Riverpod and Firebase TDD in Flutter With Example Application Using Riverpod and Firebase July 20, 2025 — 6 min read Flexible, maintainable , and easy to extend codebase ensures the application you are building is of high quality . One of the best ways to achieve that is development by using the TDD approach. Test-Driven Development is a software development approach that is based on writing testing code scenarios before implementing the actual code. By doing so proper specifications for implementation of the code to fulfill requirements are being created. This blog will explain what TDD is and show you a practical example of using TDD and clean architecture to test the most relevant parts of the app by writing unit tests in Flutter. Test-Driven Development Cycle TDD is also called the Red-Green-Refactor process regarding its iterative process, which is consisted of 3 following steps: Write a test that fails ( Red ) Write a code to make a test pass ( Green ) Refactor your code to obtain high code quality ( Refactor ) Repeating this process for every single piece of feature results in full test code coverage . Benefits of TDD Approach The code is easier to maintain Developers produce cleaner, more manageable, and readable code using the TDD approach. Furthermore, less effort is required to focus on smaller and more digestible code chunks. Having clean code is helpful in situations when a project is transferred to a different member or team. Modular design Focus is on a single feature at a time and not moving to the next one until the test is passed. Project written in such iterations makes it easier to discover bugs and reuse the code. In addition, adherence to these design principles contributes to better solution architecture. Easier code refactoring Refactoring stands for optimization of the existing code, and it has one goal – to make it easier to introduce. If the code for a small feature or an improvement passes the initial tests, it can be refactored to acceptable standards. That is a mandatory part of the TDD process. No need for a documentation There is no need to create time-consuming and detailed documentation using the TDD approach. TDD involves many simple unit tests, and they can act as documentation. Also, these unit tests show how the code is supposed to work. Less debugging When the code has fewer bugs, developers spend less time fixing them. Also, it is easier to identify errors, and developers are notified sooner when something breaks. That is one of the main benefits of the TDD approach. Unit Testing Unit testing is a type of software testing where an individual unit of code is tested under various conditions to verify its correctness. A unit may be a function, method, class, state, or just a variable. A unit test has three phases: Arrange – create the object of the unit that is being tested, prepare prerequisites, and arrange success or Failure for the case that is being tested Act – call the methods, and assign the result variable with a value returned from the component being tested under the given conditions Assert – verify whether the unit behaves as expected, and we may assert an outcome by checking if the result from the act part matches the one we expect and have prepared in arrange part using expect() function or expect a method to be called using a verify() function Sometimes unit tests might depend on classes that fetch data from live web services or databases. Calling live services or databases slows down test execution, might return unexpected results, and make it difficult to test all possible scenarios. To avoid relying on such dependencies, they are being mocked out . After mock and unit variables are created, we create instances of dependencies and the unit we are testing in a setUp() method. For example, we use a group of tests to create a group() method. Then we create variables that we need to act with or validate that the unit performs as expected. Now that you know TDD benefits and unit testing practices, let’s get onto the practical example. The Idea Behind the Application We made a Q Recipes application using a Spoonacular API to show the TDD approach in practice. The application uses Riverpod for state management, Firebase for authentication with Google, and Cloud Firebase as a database to manage users’ favorite recipes. It has the following features: Authentication with Google Flexitarian and Vegan recipes Add/Remove a recipe from favorites Filtering favorite recipes (All/ Vegan) To showcase the TDD approach to each feature of the Q Recipes application, we will split the process into the following sections: State management Firstly we define states based on feature requirements. And then start with the implementation of state notifiers following TDD principles. In test implementation, we create our notifier, call the method, and ensure that the state is as expected. UI To leave the focus on TDD and unit testing the most relevant parts of the app, the blog presents only a visual representation of UI with a short description of core widgets and logic used to build the UI. Parts that contain logic like providers or extensions are presented in this section by following TDD principles. Repositories We begin with defining an interface to determine boundaries between layers. That allows us to mock dependencies easily without implementing them right away. For example, repository methods return type is Either as repository catches the exceptions and returns them as Failure when they occur and Model is a class returned when a response is valid. And then onto the implementation following TDD principles. Data Sources Repositories use Data Sources to get the actual data. In this section, the interface is also defined first. After that, errors are handled by throwing exceptions which will be converted to the Either type by repository as explained previously. Since our logic here is only throwing exceptions and returning a valid model depending on the outcome of the code that depends on 3rd party APIs that we are using, we skip testing this section and implement it right away. List of app dependencies in pubspec.yaml : name: q_recipes_tdd description: A new Flutter project. version: 1.0.0+1 environment:   sdk: ">=2.16.1 <3.0.0" dependencies: auto_route: ^5.0.4 cloud_firestore: ^4.3.1 connectivity_plus: ^3.0.2 cupertino_icons: ^1.0.5 dartz: ^0.10.1 dio: ^4.0.6 firebase_auth: ^4.2.5 firebase_core: ^2.4.1 flutter: sdk: flutter flutter_flavorizr: ^2.1.5 flutter_html: ^3.0.0-alpha.6 font_awesome_flutter: ^10.3.0 freezed_annotation: ^2.2.0 get_it: ^7.2.0 google_fonts: ^3.0.1 google_sign_in: ^5.4.3 hooks_riverpod: ^2.1.3 injectable: 1.5.3 json_annotation: ^4.7.0 json_serializable: ^6.5.4 pretty_dio_logger: ^1.1.1 retrofit: ^3.3.1 shared_preferences: ^2.0.16 url_launcher: ^6.1.7 anim_search_bar: ^2.0.3 flash: ^2.0.5 custom_radio_grouped_button: ^2.1.2+2 firebase_auth_mocks: ^0.10.3 dev_dependencies:   flutter_test:     sdk: flutter   freezed: null   build_runner: 2.3.0   lint: ^2.0.1   auto_route_generator: ^5.0.2   flutter_launcher_icons: ^0.11.0   flutter_lints: ^2.0.1   injectable_generator: null   mockito: ^5.3.2   state_notifier_test: ^0.0.9   retrofit_generator: null For testing purposes, we use mockito package, which is a great shortcut for creating mocks, and the state_notifier_test library, which makes it easy to test StateNotifier. Testing library flutter_test uses a test package that provides the core functionality for writing tests in Dart as a foundation and exposes constructs by which projects may configure their tests, including initialization constructs like setUp() and setUpAll() methods. Authentication with Google Firebase Authentication is used as a backend service to authenticate users in an app. In this app, we used a third-party provider such as Google. Initially, you need to get Firebase set up, and you can find instructions for doing that here . For Google Sign-In, most configuration is already set up. However, for use with Android, you need to include your SHA-1 key to the Firebase console (you can find instructions for finding your SHA-1 in Android’s official docs ). Requirements: Show the sign-in page when the user is not logged in Sign in user Create a new user if it doesn’t exist Show loading widget when the user is being authenticated Show loading widget when the user is being authenticated Redirect to home page with recipes when the user is logged in Sign out user Show error message when user sign-in/out fails State Management States: Initial Authenticating Authenticated Unauthenticated Saved user Signed out Failure Auth notifier tests: import 'package:dartz/dartz.dart'; import 'package:flutter_tdd_q/common/data/current_user_provider.dart'; import 'package:flutter_tdd_q/common/data/repositories/user_repository.dart'; import 'package:flutter_tdd_q/common/domain/models/auth/auth_success.dart'; import 'package:flutter_tdd_q/common/domain/models/failure.dart'; import 'package:flutter_tdd_q/common/domain/models/user.dart'; import 'package:flutter_tdd_q/features/auth/data/repositories/auth_repository.dart'; import 'package:flutter_tdd_q/features/auth/presentation/state/auth_notifier.dart'; import 'package:flutter_tdd_q/features/auth/presentation/state/auth_state.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:state_notifier_test/state_notifier_test.dart'; import 'auth_notifier_test.mocks.dart'; // Mock dependencies @GenerateMocks([UserProvider, AuthRepository, UserRepository]) void main() {   // Prepare prerequisites   late UserProvider _userProvider;   late AuthRepository _authRepo;   late UserRepository _userRepository;   setUp(() {     _userProvider = MockUserProvider();     _authRepo = MockAuthRepository();     _userRepository = MockUserRepository();   });   AuthSuccess getAuthSuccessWithCompletedRegistration() {     return const AuthSuccess(       registrationComplete: true,       user: User(id: '1', email: 'aaa@gmail.com'),     );   }   AuthSuccess getAuthSuccessWithUncompletedRegistration() {     return const AuthSuccess(       registrationComplete: false,       user: User(id: '1', email: 'aaa@gmail.com'),     );   }   User getMockedUser() {     return const User(id: '1', email: 'aaa@gmail.com');   }   stateNotifierTest(     "Emits [] when no methods are called",     // Arrange - create notifier     build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),     // Act - call the methods     actions: (_) {},     // Assert     expect: () => [],   ); // Group tests by AuthNotifier methods   group('sign in tests', () {     stateNotifierTest(       'Emits [AuthState.authenticated] when user is already registered and has successfully logged in',       // Arrange - create notifier       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       // Arrange - set up dependencies       setUp: () async {         when(_authRepo.signIn()).thenAnswer(           (_) async => Future.value(             right(getAuthSuccessWithCompletedRegistration()),           ),         );       },       // Act - call the methods       actions: (stateNotifier) => stateNotifier.signIn(),       // Assert       expect: () => [         const AuthState.authenticated(),       ],     );     stateNotifierTest(       'Emits [AuthState.failure] when user has not successfully logged in',       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       setUp: () async {         when(_authRepo.signIn()).thenAnswer(           (_) async => Future.value(             left(               const Failure.authenticationFailure(                   AuthFailureReason.googleSignIn),             ),           ),         );       },       actions: (stateNotifier) async => stateNotifier.signIn(),       expect: () => [         const AuthState.failure(             Failure.authenticationFailure(AuthFailureReason.googleSignIn)),       ],     );     stateNotifierTest(       'Emits [AuthState.savedUser,AuthState.authenticated] when user is not registered and has successfully logged in and successfully saved user in the firebase',       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       setUp: () async {         when(_authRepo.signIn()).thenAnswer(           (_) async => Future.value(             right(getAuthSuccessWithUncompletedRegistration()),           ),         );         when(_userRepository.createUser(user: getMockedUser())).thenAnswer(           (_) async => Future.value(             right(               getMockedUser(),             ),           ),         );       },       actions: (stateNotifier) async => stateNotifier.signIn(),       expect: () => [         const AuthState.savedUser(),         const AuthState.authenticated(),       ],     );     stateNotifierTest(       'Emits [AuthState.savedUser,AuthState.authenticated] when user is not registered and has successfully logged in and successfully saved user in the firebase',       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       setUp: () async {         when(_authRepo.signIn()).thenAnswer(           (_) async => Future.value(             right(getAuthSuccessWithUncompletedRegistration()),           ),         );         when(_userRepository.createUser(user: getMockedUser())).thenAnswer(           (_) async => Future.value(             left(               const Failure.authenticationFailure(AuthFailureReason.other),             ),           ),         );       },       actions: (stateNotifier) async => stateNotifier.signIn(),       expect: () => [         const AuthState.failure(             Failure.authenticationFailure(AuthFailureReason.other)),         const AuthState.authenticated(),       ],     );   });   group('sign out tests', () {     stateNotifierTest(       'Emits [AuthState.unauthenticated] when user signed out successfully',       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       setUp: () async {         when(_authRepo.signOut()).thenAnswer((_) => Future.value(right(unit)));       },       actions: (AuthNotifier stateNotifier) async {         await stateNotifier.signOut();       },       expect: () => [         const AuthState.signedOut(),       ],     );     stateNotifierTest(       'Emits [AuthState.failure(Failure.signOutError())] when user signed out failed',       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       setUp: () async {         when(_authRepo.signOut()).thenAnswer(             (_) => Future.value(const Left(Failure.signOutError())));       },       actions: (AuthNotifier stateNotifier) async {         await stateNotifier.signOut();       },       expect: () => [         const AuthState.failure(Failure.signOutError()),       ],     );   });   group('check if authenticated tests', () {     stateNotifierTest(       'Emits [AuthState.loading,AuthState.authenticated] when registration is commpleted',       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       setUp: () async {         when(_authRepo.isRegistrationComplete())             .thenAnswer((realInvocation) => Future.value(true));         when(_userProvider.setup())             .thenAnswer((realInvocation) => Future.value(true));       },       actions: (stateNotifier) => stateNotifier.checkIfAuthenticated(),       expect: () => [         const AuthState.authenticating(),         const AuthState.authenticated(),       ],     );     stateNotifierTest(       'Emits [AuthState.loading,AuthState.unauthenticated] when registration is not completed',       build: () => AuthNotifier(_userProvider, _authRepo, _userRepository),       setUp: () async {         when(_authRepo.isRegistrationComplete())             .thenAnswer((realInvocation) => Future.value(false));         when(_userProvider.setup())             .thenAnswer((realInvocation) => Future.value(true));       },       actions: (stateNotifier) => stateNotifier.checkIfAuthenticated(),       expect: () => [         const AuthState.authenticating(),         const AuthState.unauthenticated(),       ],     );   }); } Auth notifier implementation: import 'package:flutter_tdd_q/common/data/current_user_provider.dart'; import 'package:flutter_tdd_q/common/data/repositories/user_repository.dart'; import 'package:flutter_tdd_q/common/domain/models/user.dart'; import 'package:flutter_tdd_q/features/auth/data/repositories/auth_repository.dart'; import 'package:flutter_tdd_q/features/auth/presentation/state/auth_state.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; class AuthNotifier extends StateNotifier {   final UserProvider _userProvider;   final AuthRepository _authRepo;   final UserRepository _userRepository;   AuthNotifier(     this._userProvider,     this._authRepo,     this._userRepository,   ) : super(const AuthState.initial());   Future checkIfAuthenticated() async {     state = const AuthState.authenticating();     await Future.delayed(const Duration(seconds: 2));     final regComplete = await _authRepo.isRegistrationComplete();     if (regComplete) {       await _userProvider.setup();       state = const AuthState.authenticated();     } else {       state = const AuthState.unauthenticated();     }   }   Future signIn() async {     final signInResult = await _authRepo.signIn();     await signInResult.fold(       (failure) async => state = AuthState.failure(failure),       (success) async {         if (!success.registrationComplete) {           await _setNewUser(success.user);         }         state = const AuthState.authenticated();       },     );   }   Future _setNewUser(User user) async {     final userResult = await _userRepository.createUser(user: user);     state = userResult.fold(       (failure) => AuthState.failure(failure),       (success) => const AuthState.savedUser(),     );   }   Future signOut() async {     final result = await _authRepo.signOut();     state = result.fold(       (failure) => AuthState.failure(failure),       (success) => const AuthState.signedOut(),     );   } } UI A core widget of the sign-in page is a Column containing widgets that display an app title, logo, and Google sign-in button which calls signIn() method on a state provider authNotifierProvider based on which state user gets redirected further if everything goes as expected or properly notified if an error occurs. Repositories The authentication repository handles data from AuthRemoteDataSource and AuthLocalDataSource to enable signing users in and out. Authentication repository interface: abstract class IAuthRepository {   Future> signIn();   Future signOut();   Future isRegistrationComplete(); } Authentication repository tests: import 'package:dartz/dartz.dart'; import 'package:flutter_tdd_q/common/domain/data_source_exception.dart'; import 'package:flutter_tdd_q/common/domain/models/auth/auth_exception.dart'; import 'package:flutter_tdd_q/common/domain/models/auth/auth_success.dart'; import 'package:flutter_tdd_q/common/domain/models/failure.dart'; import 'package:flutter_tdd_q/common/domain/models/user.dart'; import 'package:flutter_tdd_q/common/domain/models/user_credentials.dart'; import 'package:flutter_tdd_q/features/auth/data/datasources/auth_local_data_source.dart'; import 'package:flutter_tdd_q/features/auth/data/datasources/auth_remote_data_source.dart'; import 'package:flutter_tdd_q/features/auth/data/repositories/auth_repository.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'auth_repository_test.mocks.dart'; // Mock dependencies @GenerateMocks([AuthRemoteDataSource, AuthLocalDataSource]) void main() { // Prepare prerequisites   late AuthRemoteDataSource mockAuthRemoteDataSource;   late AuthLocalDataSource mockAuthLocalDataSource;   late AuthRepository authRepository;   setUp(() {     mockAuthRemoteDataSource = MockAuthRemoteDataSource();     mockAuthLocalDataSource = MockAuthLocalDataSource();     authRepository =         AuthRepository(mockAuthRemoteDataSource, mockAuthLocalDataSource);   });   const userCredentials = UserCredentials(email: 'test@t.com', uid: '3445uidX');   final user = User(id: userCredentials.uid, email: userCredentials.email);   final authSuccess = AuthSuccess(registrationComplete: true, user: user);   const authFailureOther =       Failure.authenticationFailure(AuthFailureReason.other);   const authFailureGoogleSignIn =       Failure.authenticationFailure(AuthFailureReason.googleSignIn); const authenticationLocalDataSourceFailure = Failure.authenticationLocalDataSourceFailure();   // Group tests by methods from AuthRepository   group('Sign in tests', () {     void setupSuccess() {       when(mockAuthRemoteDataSource.googleSignIn())           .thenAnswer((_) async => userCredentials);       when(mockAuthLocalDataSource.storeUserCredentials(userCredentials))           .thenAnswer((_) async {});       when(mockAuthRemoteDataSource.isRegistrationComplete())           .thenAnswer((_) async => Future.value(true));     }     test(       'authRepository.signIn should call authRemoteDataSource.googleSignIn',       () async {         // Arrange         setupSuccess();         // Act         await authRepository.signIn();         // Assert         verify(mockAuthRemoteDataSource.googleSignIn());       },     );     test(       'authRepository.signIn should call authRemoteDataSource.isRegistrationComplete',       () async {         setupSuccess();         await authRepository.signIn();         verify(mockAuthRemoteDataSource.isRegistrationComplete());       },     );     test(       'authRepository.signIn should call authLocalDataSource.storeUserCredentials with userCredentials',       () async {         setupSuccess();         await authRepository.signIn();         verify(mockAuthLocalDataSource.storeUserCredentials(userCredentials));       },     );     test(       'authRepository.signIn should return authSuccess when user signed in successfully',       () async {         setupSuccess();         final result = await authRepository.signIn();         expect(result, Right(authSuccess));       },     );     test(       'authRepository.signIn should return AuthenticationFailure.other when sign in failed',       () async {         when(mockAuthRemoteDataSource.googleSignIn()).thenAnswer((_) async =>             throw const AuthException(failureReason: AuthFailureReason.other));         final result = await authRepository.signIn();         expect(result, const Left(authFailureOther));       },     );     test(       'authRepository.signIn should return Authentica [truncated] ======================================================================== # Team Augmentation — How Agency Experts Working Side by Side Become Part of Client's Teams - Tech Consulting and Software Engineering URL: https://q.agency/blog/team-augmentation-how-agency-experts-working-side-by-side-become-part-of-clients-teams/ Learn more about team augmentation and how agency experts working side by side become part of client's teams. Team Augmentation — How Agency Experts Working Side by Side Become Part of Client's Teams | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Team Augmentation — How Agency Experts Working Side by Side Become Part of Client’s Teams Team Augmentation — How Agency Experts Working Side by Side Become Part of Client’s Teams October 18, 2025 — 8 min read Looking from the IT delivery stand, hiring vendors to do the predefined tasks is no longer the standard the market is looking for. Planning extensive projects, where the requirements are defined long up front, and the success is measured by deadlines and budget is becoming ineffective. Since the market requires constant changes, to satisfy the clients, agencies move away from the traditional vendor approach, and move closer to the IT team augmentation model. Since this model includes mutual planning, delivery and results review, it is natural that agency experts become part of the clients’ teams. They contribute with, not only their technical and business knowledge, but with their approach, skills and mindset. Agency experts become partners who share accountability for overall business goals and outcomes. Team augmentation transforms agencies from vendors into partners . Let’s see what that actually looks like in practice. Creating shared ownership Working side by side is much more than just being part of the team. It is about agency experts being embedded into the clients’ teams and business processes. They are part of daily stand-ups, sharing the same accountability for the tasks taken on planning. They participate in the same refinement sessions and mob together to solve the problems. This model requires a high level of collaboration from both sides , which further requires a high level of trust between the people working together. The trust enables the client to open their doors and let other people in, to be part of their business and technical structures. Being part of a client team also requires a high level of responsibility from agency experts, to be able to do their work with high quality standards, but to also be proactive and suggest improvements that are relevant for the client’s business. They don’t wait for someone to give them work, they create work! But how does an agency evolve from being a vendor to becoming part of the clients’ teams? Becoming part of the clients’ teams When agency experts start working on client projects, they need to embrace the whole new set of knowledge. They need to get to know the client’s systems, culture, and ways of working. This can be overwhelming for a lot of people, trying to do their job the best way they can. Since agency experts want to be on the same level (or even higher) as client employees, they start learning, listening deeply and demonstrating value very quickly. This shouldn’t be possible if there isn’t trust between the client and agency. When trust is built, people stop looking at agency experts as vendors or extra hands. They start perceiving them as their equal co-workers, with the same knowledge and motivation to do the required work. Not only that, depending on the role they are in, they become part of the strategic discussions and planning sessions . They are asked for opinions, sharing the best practices and valuable experience from different domains. Becoming a client’s team member doesn’t mean disconnecting with the agency. At the end of the day this all gets back to agencies, which increase the level of overall knowledge and experience of their employees. To understand this approach, we need to explore how it impacts the business outcomes. Shift towards shared goals and responsibility One of the most important advantages of client-agency partnership is shared accountability . When agencies position themselves as vendors, the responsibility is on delivering agreed work in the form of the output. When the project ends, the responsibility ends there as well. But, when they work in a co-creation model, the focus shifts toward outcomes , where both sides are responsible for the business impact. Agency experts are invited to participate in value assessments for each initiative, so they could also have an impact on final customer value that is delivered, such as user satisfaction, reduction of costs or increasing the revenue. Whatever the goals are, agencies and clients commit to the same outcomes and have the same responsibility to achieve them. The question is, how agencies and clients find themselves working on the same roadmap ? Building roadmap together When clients and agencies plan separately and they are supposed to work together, that usually creates misalignment between big planes and actual business needs. Correcting the plan often takes time, which leads to additional costs. When clients and agencies work as partners , they approach the planning together, considering the current priorities, risks, dependencies and everything else that could impact the delivery. People who are part of the client teams are familiar with the client’s goals and challenges and can contribute with their mindset and knowledge so that decisions could be made together. Their voice is heard not only in their own teams, but across value stream meetings and quarterly plannings. This joined planning approach ensures that what gets delivered is not just technically feasible but also relevant from the business side and strategically aligned. Which brings us to an important part of this process which is knowledge exchange and the way it creates continuous improvement. Knowledge Exchange One of the values that agencies have is the knowledge from previous projects, industries and markets. Clients, on the other side, have very deep knowledge about their customers, internal processes and business goals. Combining these two often leads to improvements and innovations. Agency experts deepen their knowledge on many different fields, which is a great benefit for people used to continuous learning and growing. Clients benefit by having the pool of expertise and best practices they can quickly adapt and use on a daily basis. Knowledge exchange improves client’s organisation in general , leaving teams stronger when the project ends. Why Clients Value Q’s Approach The approach we take in Q is to embed our experts into clients’ teams as equal team members. This approach is known as the IT team augmentation team model. When clients request for additional people, we first screen the current availability of people and their skillset. After that, clients hold interviews with those experts to select people not only with the best technical skills, but the ones who fit into the existing teams and company culture. Once selected, Q experts are treated as any other team members and are included in all existing and future ceremonies and initiatives , from daily stand-ups to quarterly plannings and discoveries. They have their managers from the client side, having regular 1on1s with them, supporting them to perform better and providing feedback back to Q. Q team members have their Engineering leads, who are responsible for the team to provide the high value to the client and work according to best practices. Engineering leads also take care of people’s career development and additional education, so they could move to a higher seniority level and contribute more with their skills and mindset. Since the Q team is multidisciplinary , there is a special department called Center of Excellence, who offers support on the technical level for all roles in the team, in case deeper technical analysis is needed, which increases the impact on the project. Transparency, collaboration, and trust are the foundation of how the team augmentation works, making it very hard to distinguish agency members from the client. Besides being part of day to day activities, our experts also suggest improvement in clients processes, introduce new agile practices and are part of continuous improvements and feedback loops. Their approach, ways of working and thinking becomes the baseline for how new team members, both from client and agency company are expected to work. Team members also share personal stories and support each other through challenges. When people move to another project, they stay in touch with clients sharing the important milestones in their professional and personal lives. Having the team augmentation model is not about adding the extra resources. It’s about adding talent, mindset and creating the culture where people work and grow together. Conclusion It becomes clear that client-agency relationship is more than a trend, it is a competitive advantage. It benefits both sides. When working in augmented teams, clients get solutions that are aligned with their strategy and agencies become part of the client’s long term success. Working as one team means being aligned, transparent, and focused on the outcomes together . Integrating agency experts in client’s teams, and dedicating them to support the client in achieving their goals creates strong collaborative relationships and long term value. It also encourages continuous learning, mindset shift and accountability. Success of the product doesn’t lie on either vendors or client side. It belongs to a team of dedicated members working together. Irena Cvetic Irena is our Engineering Lead with years of experience in the BA area who likes exploring and learning new things through every day work and communication with others. In her free time she enjoys reading different kinds of books, listening to the latest music hits and drinking good coffee. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 18, 2025 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 18, 2025 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Team building in the woods - Tech Consulting and Software Engineering URL: https://q.agency/blog/team-building-in-the-woods/ Q’s team building took employees into the woods for paintball, laser tag, ziplining, teamwork, strategy, and plenty of fun. Team building in the woods | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Team building in the woods Team building in the woods July 25, 2019 — 1 min read “Not another dumb company team building game!” said no one when they heard we’re gonna play paintball, laser tag, and stroll down the zip line. We really enjoyed the adrenalin rush and it helped the team learn about each other — how each person thinks, works, solves problems, and has fun. Paintball and laser tag are games where strength and speed are not nearly as important as strategy and communication. It was creative, fun and it was a chance to let loose, try something new, and to see co-workers and employees in a new light. There was no limit to the skill set of those in attendance; from procurement to engineering, safety, and even management to those with formal military experience. This experience, however, was not enough to topple a series of planned games by the paintball organizers. Games included Win the Fort, Capture the Flag; all team dependent but, some persons were more targeted than others. Regardless, it was certainly a fun and successful team event, where some walked away with more battle wounds than others. After all of these activities, the evening transitioned into fun and laughs bringing a great conclusion to our team-building activity. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 25, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 25, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Tech Lead Tips and Tricks: Easier Transfer of Developers Between Projects - Tech Consulting and Software Engineering URL: https://q.agency/blog/tech-lead-tricks-and-tips-transfer-developers/ Manage developers across projects easily using these tech lead tips and tricks. Find out how AWS can help you as a tech lead. Tech Lead Tips and Tricks: Easier Transfer of Developers Between Projects | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Tech Lead Tips and Tricks: Easier Transfer of Developers Between Projects Tech Lead Tips and Tricks: Easier Transfer of Developers Between Projects March 13, 2023 — 9 min read Let’s talk about tech lead tips and tricks for the transfer of developers between projects . We all know there is no easy way to switch developers between projects quickly. Especially if you need to do it often as we do in the Q Client Support . Each developer needs some time to get to know the code and the project. I’m not giving any magic tricks here. But I can share some tips and tricks that I discovered working as a tech lead in the Q Client Support department. In the Q Client Support department, the developers transfer from project to project happens several times a month. In the beginning, Q Client Support looked like a company department that could easily get messy and developers avoid working there. But we love challenges :). How to reduce stress The most important part was to reduce stress for developers . When developers come to work for the Q Client Support department they usually get max 4 projects to handle. They need to make changes to the project they know almost nothing about. Most of the time there is no QA or another developer working by their side. People that were working on the project before, QA, PM, BE, and FE… work on other projects now and the developer needs to schedule a meeting just to ask a few questions, help or review. Or even worse, several people working on that project already left the company. Here is what worked for us: Casual daily meetings 15 to 30min long We have so much fun and fulfilled time on our daily calls that one colleague said that we actually have small team buildings. The important thing is to talk with people and make fun . In Q Client Support, developers are working on multiple different projects. When someone talks on a daily sync, others don’t fully understand what the other developer is talking about. But there is so much we can learn from each other anyway. Also, it is good to know that you are not the only one in this situation and have a group of people who understand and support you. Lower your expectations In Q Client Support we have lowered our expectations. It is not the same working with a great team that has PM, BA, QA, minimum 2 BE, and 2 FE on the project using the Agile principle and working mostly alone on a finished project without detailed documentation with a limited amount of hours a month. A developer gets in direct contact with a client more often on a solo basis. A developer is in the open. Sometimes the client thinks that the developer is a “one-man show” and asks questions like “Can you make me a one-page microsite with just several links, products, and categories?” :D. You can’t wait to share that on daily calls in the Client support :D. You should: Lower down criteria for bonuses . Give more time to a developer to get the know the project. Give kudos when someone earns it. Record all relevant meetings If you have demo meetings, handover meetings, and meetings with clients where you get some important information, ask participants if you can record the meeting . If one developer was at that meeting and tomorrow some other developer must take over the project (or the task) you don’t have to spend additional time to demo and transfer important information. Create an example of a project handbook Create an example of a project Handbook that will represent what you expect of a Handbook when you are taking over some project. Communicate clearly what your expectations are from the project coming into your department. For example: Finished open tasks (you can’t transfer something that was in the “Client Review” column in one department into the “To Do” column to another department) Helpful README documentation in the repository Clean repository (main branches in sync, no leftovers like unresolved Merge requests) Clean backlog (removed what is deprecated, left only what needs to be done) Demo Project handbook (documentation of all important details, flows, setups, environments, and project-specific stuff – necessary for the new developer to quickly start working on the project) Review the projects It is helpful to track what kind of projects are coming to your department. To be able to do that ask developers and DevOps to review the project. Document issues that developers encountered and share them with the team. Talk with sales to adjust packages and contracts with clients to help you cover real issues and customer needs. Use virtual desktops like Amazon WorkSpaces This might not work for mobile development. But for most of the backend and frontend, we use Amazon WorkSpaces . If you like to try how it works here is the quick setup guide: 1. Launch Quick Setup Guide 2. Create directory 2.1 Be sure that you are in the correct region. Select the directory type “AWS Managed Microsoft AD”. 2.2 Choose a Small AD Connector. AD Connector is a proxy to your existing Microsoft Active Directory. 2.3 Enter directory information. Select Edition that matches your business. 2.4 Choose VPC and subnets 2.5 Review and create 3. Launch WorkSpaces When you have the directory ready you can launch WorkSpaces. 3.1 First select Directory. 3.2 Create different users for each WorkSpace; you can use the same email. This is important later to track the usage of a single WorkSpace. 3.3 Select bundle and storage sizes. Standard with Amazon Linux 2 is a free tier. You can increase storage size later, but not decrease it after you launch a WorkSpace. 3.4 Choose AutoStop mode to reduce the cost of developers who are not working full-time on WorkSpaces. 3.5 Review and launch WorkSpace and you are done! When you launch your WorkSpace you will see your new WorkSpace under WorkSpaces. At first, it will have the status Pending, but that will change quickly. Amazon allows 4 WorkSpaces per region by default. But you can ask them to increase that limit. To start using Send developers an invite . Select WorkSpace you like and under Actions click Invite users. This image shows what an invitation looks like. You can just c/p and send it to the developer as an email or via some messaging app. The invitation contains the link for the WorkSpaces Client installation . It is important to have a stable internet connection to be able to use it. The invitation also contains a registration code . The registration code is the same for WorkSpaces in the same region and directory, so it will not ask them again when they enter this code. But if they need to, they can change it. The login screen has a link to change a registration code. There is also Forgot Password link that you should use when the password expires. It is not possible to work on the same WorkSpace from multiple WorkSpace clients at the same time. Only one user can be logged in at the same time. If another user logs in another will be disconnected. Setup local environment and write a guide for developers on how to work with virtual desktops Install the tools that developers in your team usually use on their machines like JetBrains tools, Visual Studio , Slack, Google Chrome, DBeaver … and give open hands for the rest. Even simple things can slow developers down . If they don’t know how to structure local folders and files, where to put materials or temporary dumps and other stuff. If they are not sure what is installed and what is not they need to check first. So it is best to have all that info in one document that is easy to read. Especially if there are some known issues, document them too . Don’t let developers bump into them each time by them selves. For example: Known issues AWS WorkSpace Client application requires outbound access to 443 port (TCP). This means that we can’t expose Nginx on port 443. If your docker-compose up is failing because of this comment out in the docker-compose file, the part that exposes nginx to 443. If curl from the docker container is not working, try adding this into the /etc/docker/daemon.json file. Create a file if it doesn’t exist. { "debug": true, "experimental": false, "dns": ["8.8.8.8"] } After that flush changes and restart Docker $ sudo systemctl daemon-reload $ sudo systemctl restart docker Have a calendar to track who works on virtual desktops You don’t wish to interrupt the developer and give access to another developer to the same WorkSpace at the same time. It is best to have a calendar to check who was the last working on some WS and communicate the switch. Document changes made on AWS WorkSpaces Document each project setup or software installation made on AWS WorkSpaces. This should be done by the tech lead or team lead. Every time you need to switch developers just check AWS WS setups and you know which one you need to hand over to another person. Setup budget and alerts Amazon gives you the option to set up a budget and get an alert when the budget is almost used. You can easily track and manage your costs in AWS Cost Management. You can set up an S3 bucket to get detailed, hourly, cost, and usage reports. Control WorkSpace usage with cron job Sometimes people forget things. The developer can forget to disconnect from the WorkSpace client. Putting the device in sleep mode will not always trigger AutoStop. To keep the price under control, shout down WorkSpaces automatically after working hours. You can set up a local cron job for this if you install AWS CLI locally. For example #!/bin/bash aws workspaces stop-workspaces --stop-workspace-requests WorkspaceId=ws-88aBa33ttl Conclusion You can laugh, you can cry, you can leave it or you can try. You can also do everything with supportive colleagues and a shared local environment. Good luck! Anka Bajurin Stiskalov Engineering Lead at Q. Passionate about developing with a focus on making life easier for fellow developers. Always looking for ways to streamline workflows and boost productivity — let's build smarter together! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 13, 2023 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 13, 2023 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Tech Student Visit - Tech Consulting and Software Engineering URL: https://q.agency/blog/tech-student-visit/ Q hosted a Tech Student Visit in Zagreb, giving students insights into technology, real-world projects, company culture, and the job interview process. Tech Student Visit | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Tech Student Visit Tech Student Visit June 12, 2019 — 1 min read We organized a Tech Student Visit for students from technical faculties in Zagreb so they could get to know us, hear our story, and experience our unique company culture. They had a chance to meet and talk to our key people and hear about the technologies we are working on and projects we have successfully launched. After the tech workshop, they could hear a bit about how to prepare themselves for a job interview. Our HR specialists shared tips and current trends of the selection process in Croatia and globally. Students also had the opportunity to put their new knowledge to the test through a simulated job interview. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 12, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 12, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Technology Due Diligence: From Insight to Action - Tech Consulting and Software Engineering URL: https://q.agency/blog/technology-due-diligence-from-insight-to-action/ Have you ever come across the term technology due diligence? Learn more about this process in our article — from insight to action. Technology Due Diligence: From Insight to Action | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Technology Due Diligence: From Insight to Action Technology Due Diligence: From Insight to Action June 26, 2025 — 8 min read Have you ever come across the term due diligence in a tech context? By definition, technology due diligence is a comprehensive process of investigating, evaluating, and verifying the technical, operational, and financial aspects of a system, service, or organisation. Sounds fancy, but in practice, it’s a smart and focused way to understand where your product, process, or team stands, and where things might be falling apart under the surface. Clients usually come to us with a hunch: something’s off. Delivery is slow. Bugs are piling up. Or they’re about to scale, raise funding, or switch vendors and want a clearer view of what they’re working with. That’s where we step in. At Q, we offer technology due diligence across a few key technical domains or areas: Solution Architecture Backend Frontend DevOps Project Management Quality Assurance Business Analysis UX/UI Design During the analysis we focus on: Code Quality & Maintainability Review Product & Development Team Assessment Financial, IP & Data Management Infrastructure, Performance & Scalability Analysis Security, Compliance & Risk Management Depending on your needs, we tailor the assessment to cover the right combination of both. The point is – we start by understanding your context and build from there. Depending on the need, we split our process into two main tracks: Technical Screening – covering Solution Architecture, Backend, Frontend, and DevOps Process Screening – covering Project Management and Quality Assurance (and sometimes UX, depending on the scope) Let’s break it down. How Technical Due Diligence Works (Step-by-Step) There are five steps in our technical due diligence process: 1. Project Kick-Off We start with a discussion: What’s your context? What exactly should be screened? This phase is all about setting a clear direction and scope for the review. 2. Setup & Preparation We agree with the client on what goes through automated vs. manual screening. Our team sets up the environment locally and integrates our internal screening framework. The goal is to make sure everything runs smoothly and is ready for assessment. 3. Automated Analysis Here’s where tools come in: SonarQube, Snyk, CursorAI, and others. We run static analysis and gather objective metrics. Before we use any AI-driven tools, we always get client approval. This phase gives us a solid, unbiased view of code quality and security. 4. Expert Review Tools are great, but context matters. Using our internal Q Tech Screening framework, we go deeper: code architecture, maintainability, patterns, and pain points. It’s category-based and backed by experience. 5. Final Report & Recommendations Everything we find regardless is it good, bad, and in between, is consolidated into a structured report. We don’t just deliver it. We present it. Explain it. Make sure the right people understand it. How Process Due Diligence Works While technical screening is hands-on with the code and infra, process screening looks at how things actually get built and delivered. It has three steps: 1. Kick-Off & Initial Assessment Same as above, define the scope, understand the context, and agree on focus points. 2. Process Evaluation We review your workflows, tools, ceremonies, documentation, and communication structures. We look at how teams work. Not just what they build. But we don’t rely solely on documentation (which, let’s be honest, is often outdated or incomplete). To get a full picture, we use interviews, observation, and “shadow mode” sessions with key team members. This helps us understand the real process, not just what’s on paper. 3. Reporting We prepare a comprehensive report that includes key findings, context around their impact, and a clear, actionable plan for how to address them. This isn’t just a list of issues—it’s a roadmap tailored to your priorities, helping you move from insight to implementation. In short: Findings + recommendations = the foundation for your improvement plan. So, What Happens After the Assessment? Here’s the thing: technology due diligence isn’t the finish line, it’s actually the beginning. Once the report is delivered, the next step is action. Ideally, the client wants to implement the proposed changes. That’s when we roll up our sleeves and continue the collaboration. But it’s not a fixed path. Some clients choose to start improvements internally, using their own teams and resources. Others decide to move forward with us and most often with the same team that conducted the due diligence. Why? Because that team already understands the context, pain points, and opportunities. If that’s the case, we: Keep the same team that did the assessment Draft a per-domain backlog Develop a roadmap (short-term quick wins + long-term transformation) Coach teams where needed Track KPIs like velocity, cycle time, and stakeholder satisfaction Iterate based on feedback and data It’s not a one-time review. It’s a journey, and we stay with you. Case Study: Spartan Race One of our first due diligence engagements was with Spartan Race , an endurance and fitness company based in Boston, USA. Founded by Joe DeSena in 2010, Spartan is now the world’s largest obstacle race brand, with over 200 events annually across 40+ countries. Their ecosystem includes training, nutrition, health products, and media content. Their Challenge Spartan’s dev efforts were led by a European vendor team, while the product and tech leadership sat in the US. They were operating in a reactive, maintenance-heavy way and wanted a clear view of their weak spots, with recommendations for improvement. After a few initial calls, we mapped out their current setup: Backend, Frontend, DevOps, QA, and a blended PM/PO/BA role. UX/UI wasn’t a formal role on their side, but we saw enough red flags to include that in our assessment too. How We Worked The full technology due diligence process took four weeks for the critical areas defined as the scope of analysis. Given the timezone difference, we coordinated meetings in the late afternoon and used mornings for deep dives into documentation and code. Communication was primarily over Slack. Some challenges we faced: No direct access to the external non-native English speaking development team, which required a lot of patience and follow-ups Response times were sometimes slow Still, we managed to complete both technical and process reviews thoroughly. And the results were clear. Findings & Impact Our analysis uncovered critical technical and structural vulnerabilities that could compromise Spartan’s scalability, stability, and security. Many of these risks weren’t visible on the surface, but became clear through a structured deep-dive. We also found clear opportunities to reduce operational costs, especially via AWS optimisation. These were not hypothetical gains, they were real, measurable savings. The final report delivered: A clear gap analysis Actionable recommendations per domain A roadmap for both tactical and strategic improvements Since then, we’ve continued working with Spartan on implementation and upgrades. Post-Due Diligence: Real Work Begins Here’s what’s happening on the ground now: Backend & Frontend Code coverage introduced Documentation practices implemented Refactoring key parts for stability and readability Establishing CI/CD pipelines for safety nets Project Management Introduction of a Project Manager role to enable the Product Manager to fully focus on what really matters Full transition to Scrum Introduction of ceremonies Estimation guidelines defined Centralised documentation and a real product roadmap being prepared Quality Assurance Defining better acceptance criteria Standardising test processes Improving defect tracking and prioritisation DevOps AWS optimisation Access keys rotation policy introduced IAM roles reviewed Basic security alerts in place Monitoring via Grafana Rollback enabled Merge approval workflows set All of this, without blocking feature delivery . That’s always the hardest part: making improvements without disrupting the roadmap. It requires trust, collaboration, and laser-sharp coordination. Conclusion: It’s Not Just a Report, It’s a Turning Point Technology due diligence is not just about ticking boxes or generating a long list of issues. It’s about creating clarity where there was uncertainty. It’s about translating observations into opportunities , and giving leadership teams the insight they need to make confident, forward-looking decisions. For many companies, especially those scaling fast or navigating complex tech ecosystems, the real risks aren’t always visible. You don’t see them until something breaks or even worse, until you hit a wall that stalls growth. What we offer is a flashlight and a deep dive into those blind spots. Not only to highlight what’s not working, but to suggest what could work better. The Spartan case is a great example. It wasn’t just a technical review, it was a full-circle analysis that combined architecture, process, product mindset, and operational dynamics. And we didn’t stop at identifying problems. We mapped out the road, lit up the path, and stayed on it with them. In a short period of time Spartan experienced a transition: more structure, better prioritisation, smarter tooling decisions , and above all, a team that’s starting to feel more confident in the way they work. That’s the part we care about most. Whether you’re a startup feeling with growing pains, a scale-up stuck in slow motion, or an established enterprise seeking fresh perspective, due diligence could be your smartest next move. Vinka Đurđević Vinka is a senior project manager with more than 12 years of experience in IT. She is a certified Scrum Master, PMP and Agile Practitioner with a background in software development and Salesforce. She enjoys working on dynamic projects and loves collaborating with teams to get things done. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 26, 2025 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 26, 2025 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Testival Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/testival-meetup/ Q hosted the Testival Meetup, exploring mobile app testing, real devices, emulators, and self-verifying test data. Testival Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Testival Meetup Testival Meetup February 6, 2020 — 1 min read Quality Assurance engineers serve as the gatekeepers for ensuring that only products that meet certain quality standards get shipped. We are excited to be collaborating with the *Testival* meetup group to create this opportunity for learning about and discussing technologies and best practices in the QA field. This time Dora and Karlo shared a lot of useful info. Our Dora who is a QA Engineer discussed the challenges testers are facing in mobile app testing and what types of mobile app testing are performed. She presented the advantages of emulators and real devices for mobile apps testing. After a short presentation and discussion, there was an interactive demo with a demonstration of mobile app testing on real devices and emulators. Then Karlo took the stage. He said: “Software testers are responsible for creating test data. They can do it manually or using testing tools, but it is their responsibility. Here we explain the concept of self-verifying data oracle.” It was a full house of inquisitive minds. Paula Kovacevic Paula is the Head of Operations, working on process improvement and developing the company's quality level. She is a Certified Internal Auditor for Quality Management and soon-to-be a Six Sigma Green Belt Master. She strives to keep processes simple and clients happy. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 6, 2020 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 6, 2020 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Thank You, Mom(s), You Deserve Your Special Day! - Tech Consulting and Software Engineering URL: https://q.agency/blog/thank-you-moms-you-deserve-your-special-day/ Discover how motherhood shaped a Tech Lead’s approach to remote work, leadership, work-life balance, and developer support. Thank You, Mom(s), You Deserve Your Special Day! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Thank You, Mom(s), You Deserve Your Special Day! Thank You, Mom(s), You Deserve Your Special Day! June 20, 2022 — 5 min read Moms as role models If someone asks me who is my role model I would say, moms . I have colleagues and people that I admire and try to follow as leads, but real role models in my life were always moms. Specifically, in my life, that is my mom, my sister, my mother-in-law, my sister-in-law, my best friend, and also some other moms who don’t even know that I look up to them, like the mom of one friend/colleague from the park where we play with our children. Every one of these moms has something special that touches me to the core and makes me wish to be a better person, mom, and colleague. It is not something that makes me a great developer . It made me a great developer who works 100% remotely when no one else (that lives pretty much near the office) worked that way in our company or anyone I knew personally. That made my company implement tools and processes for time and effort tracking 6 and a half years ago, much earlier than others in our country. We were 100% ready for the corona period because we had already worked this way for years. It is something that makes me log off from the computer at 4 pm, even if my developer side is still trying to pull me back in. I still fall for all the sweet talks in the IT industry where clients and colleagues are giving you kudos and high praise. However, even while I’m writing this, I’m struggling not to start learning and doing more for my self-improvement instead of writing this long thank you “card.” If all those moms didn’t “show” me what the priorities in life are, it would be much harder to stop working or stop investing my time in self-development from a business perspective than playing with kids or calling an old friend. But it is not that moms are trying to show anything. Moms are fighting in their own way for the real values of life. They cry, laugh, yell, hug, and are sometimes annoying with all that “stupid” little requests, kisses, care, and fuss. But it is hard to ignore them because we know that they are right. Mom of 4 as a Tech Lead When my CTO promoted me to a Client Support Tech lead , he said, as a joke, “You will be a mom to everyone. You have an experience with that anyway”. I’m still laughing at this every day, not as a joke, but as a funny and happy life story because he got me. Or, with Avatar’s language, he saw me. I can be a mom. I can work 100% remotely, play with kids after 4 pm, help them with homework, have lunch together with family not only on weekends, and still have a nice and promising career! But also, I can do my “mom” stuff in my workplace . The first thing I did was immediately step up for a colleague who was trapped in one project and doing too much overtime. I have set things up, so he doesn’t need to work overtime anymore. As a mother, I have completely developed empathy for people that are trapped into overtime work. My mission now, and not only my but it was obviously my CTO’s idea, is to reduce overtime work for all developers that are trapped into projects that they were working on before and that they need to support now and then because it is hard to add another developer quickly just for several hours of work Since this is a thank you card, there will be another blog about how my company, especially my Client Support team , is trying to accomplish this. But I’ll give you a hint. My CTO, Harry , said that I will be a “mom to everyone” because developers will rotate in the Client Support team every several months so that everyone can have a chance to work on projects and experience work in the support. Working in support can also be challenging. But you get a higher overview of other projects and architecture and have a chance to learn new stuff more quickly. Another great thing that we set up for our support team are Amazon WorkSpaces . AWS WS are Virtual Desktop Solutions . This solves several problems that developers have when they often switch from project to project or transfer a project to another developer. The most important thing that I’m trying to accomplish with this AWS WS setup is to reduce stress. For example, when you need to jump in quickly to some project and solve some task, but your env setup is suddenly not working, and you know that client is on a limited budget, you start to feel stress. As a “mom,” I wish everybody would enjoy their life and have less stress, and now I can help developers with that. AWS WS setup allows us to have local env setups up and ready all the time. Docker containers can run for all projects developers need to switch to during the month. For example, suppose someone gets sick or has some other family emergency. In that case, another developer can jump in and continue exactly where he left off even if the code was not ready to be deployed on the server (for example, throws 5** errors locally). There are no blockers for someone else to take over. Even if these situations never happen, keeping in mind that everything will not fall apart if you need a few days off reduces stress . Knowing that your company is taking care of you and your family time reduces stress. Thanks to all moms doing their “moms” work with love and courage. Special thanks to the mom who inspired me to be a better mom and colleague . Happy Mother’s Day! Anka Bajurin Stiskalov Engineering Lead at Q. Passionate about developing with a focus on making life easier for fellow developers. Always looking for ways to streamline workflows and boost productivity — let's build smarter together! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 20, 2022 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 20, 2022 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The Art of Discovery Projects — Transforming Ideas Into Solutions - Tech Consulting and Software Engineering URL: https://q.agency/blog/the-art-of-discovery-projects-transforming-ideas-into-solutions/ In this blog post, we'll dive into the concept of discovery projects, their benefits, and how they can be implemented in various approaches. The Art of Discovery Projects — Transforming Ideas Into Solutions | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The Art of Discovery Projects — Transforming Ideas Into Solutions The Art of Discovery Projects — Transforming Ideas Into Solutions September 6, 2025 — 11 min read Creativity and innovation are vital to a productive discovery. Taming the hesitation and unleashing inspiration is key to finding the best solution. In today’s fast-paced world, innovation and creativity are essential for success in any field — one way to foster these qualities is through discovery projects. These projects encourage exploration, experimentation, and learning , ultimately leading to new ideas and solutions. In this blog post, we will dive into the concept of discovery projects, their benefits, and how they can be implemented in various approaches. What are Discovery Projects? It is not rare that the client approaches us with a general idea of what they need or want but without the much-needed details which would enable us to dive into the development immediately. At that time, we need to detect and recognise all the unknowns, what-ifs, how-abouts and make the client aware it is much more than what they might perceive as minor details, that we need to find out before the development can be kicked-off. Immense dedication and collaboration are required to have the best possible output from the discovery project, not only from the project team but from the client as well because they are the ones choosing what is the best for their product, business, or concept. If they are not fully invested in the discovery project, it poses a great risk if we develop something that might not be adequate for the client or their user’s needs. Discovery projects encourage curiosity, creativity, and critical thinking , as participants are given the freedom to explore new ideas , test hypotheses, and share and learn from their experiences. Discovery projects can vary depending on the client’s needs, knowledge, expertise, and, of course, budget. The latter factors are crucial to detect before the project starts because they are key inputs for a successful discovery project determining the scope, duration, needed resources, and needed skills that can contribute to giving the clients exactly what they need. The Discovery Phase as a Part of the Development Project It isn’t always possible to have a separate discovery project before the development itself. The client might not have the budget, or there isn’t enough time to have a full discovery project to precede the development. However, it is much riskier to jump into development without proper knowledge of the project and its goals . Going into development with unclear scope, what-ifs, and maybes will surely have repercussions along the way. Ideally, at least a discovery sprint should be planned before the development begins. This is an important part of the Project Initiation phase, and as described by Eddie Merla — Begin with the end in mind . The discovery phase is a crucial stage in the project lifecycle , where the groundwork is laid for the project’s success. It involves gathering information, identifying needs, and defining the project’s goals and objectives. The primary purpose of the discovery phase is to gain a deep understanding of the problem or opportunity at hand, as well as the stakeholders, resources, and constraints involved. This phase helps to ensure that the project is well-defined, feasible, and aligned with the client’s goals and priorities . Key Components of the Discovery Phase: A checklist of actions and outputs can help drive the Discovery phase in the right direction: 1. Research and information gathering: The first step in the discovery phase is to gather relevant information about the project. This information may come from the Presales or Sales team, or the team can recognise the missing inputs during the discovery kick-off and raise their concerns in a timely manner – stress out to the client what and why something is needed (i.e technical documentation, design guidelines…). 2. Stakeholder identification and analysis: It is essential to identify and analyze the stakeholders involved in the project, including clients, team members, and any other parties who may be affected by the project’s outcome. Understanding the needs, expectations, and concerns of these stakeholders is crucial for developing a project plan that addresses their requirements and ensures their buy-in. It is also important to know who has the answers to specific questions, i.e. Product Owner might involve their technical support, and the correct POCs for specific topics are much more relevant for obtaining necessary inputs. 3. Defining goals and objectives: Needles to say, but let’s do it anyway – the project’s goals and objectives should be clearly defined. Should, because it is impossible to set anything in stone in today’s fast-changing times and specifically in our industry, but there must be a solid base to kick off the development and keep track of the discrepancies from the original plan. 4. Identifying constraints and risks: During the discovery phase, it is crucial to identify any constraints or risks that may impact the project. Constraints may include budget limitations, timeframes, or resource availability, while risks may involve potential obstacles or challenges that could derail the project. Identifying these factors early on allows the project team to develop strategies to mitigate or manage them effectively. 5. Determining the project scope: The project scope is a detailed outline of the project’s deliverables, requirements, and boundaries. It serves as a roadmap for the project, providing a clear understanding of in and out-of-scope items. A well-defined project scope helps to anticipate scope creep and assures that all stakeholders have shared expectations and understanding of the project’s outcomes. 6. Establishing the project timeline: Based on the project scope, a timeline should be developed to frame the project’s key milestones, deadlines, and dependencies. This timeline helps to ensure that the project stays on track and provides a clear framework for monitoring progress and making adjustments as needed. By investing time and effort in the discovery phase, project managers can ensure that their projects are well-planned, well-defined, and well-aligned with the client’s goals and priorities. This strong foundation sets the stage for successful project execution and ultimately leads to the desired outcomes and benefits. Discovery Project Outcomes One of the biggest benefits of the discovery project for the client is that they will learn what they can get , in what timeline and for which price, how that can improve their business or product, and a clearer direction in which they can grow. The project team will have a clearer picture of what they are getting themselves into when starting the development phase and what is expected of them to deliver, and in which timeline . The following outcomes are a best-case scenario for a successful wrap-up of the discovery project and a healthy start to the development phase: 1. Clear project objectives: A discovery project helps to define and clarify the project’s objectives, ensuring that all stakeholders have a shared understanding of the project’s purpose and desired outcomes. 2. Risk identification and mitigation: By identifying potential risks and challenges early in the project lifecycle, a discovery project allows for proactive risk management and mitigation strategies, reducing the likelihood of project delays or setbacks. 3. Accurate project scope: A discovery project helps to establish a well-defined project scope, which can prevent scope creep and ensure that the project stays on track and within budget. 4. Informed decision-making: The research and analysis conducted during a discovery project provide valuable insights and data that can empower informed decision-making throughout the project lifecycle. 5. Stakeholder alignment: Engaging stakeholders during the discovery phase helps to establish that their needs and expectations are considered and addressed, leading to greater stakeholder satisfaction and buy-in during the development as well. 6. Resource planning: A discovery project allows for more accurate resource planning, providing a better understanding of the project’s resource requirements and potential challenges. 7. Improved project estimation: By understanding the project’s scope, objectives, and potential risks, a discovery project can lead to more accurate delivery estimates, including timelines and budgets for the development phase. 8. Better collaboration: A discovery project strengthens collaboration among team members and stakeholders, as it encourages open communication and the sharing of ideas and information. 9. Higher project success rate: Projects that undergo a thorough discovery phase are more likely to succeed, as they are better prepared to address challenges and achieve their objectives. Intangible Benefits of the Discovery Project Besides the more prominent outcomes, there are some which come in as a really significant side effect of the discovery projects. 1. Fostering creativity and innovation: Discovery projects provide an environment where individuals can think outside the box and explore new ideas. This freedom encourages creativity and innovation, leading to new solutions or the best solutions for the client and the company. 2. Developing problem-solving skills: As participants work through the challenges and obstacles they encounter during a discovery project, they develop essential problem-solving skills. These skills are transferable to other areas of life and work, making individuals more adaptable and resourceful. 3. Encouraging collaboration: Discovery projects often involve teamwork, as individuals bring their unique perspectives and skills to the table. This collaboration nurtures communication, cooperation, and the sharing of ideas, leading to more effective and innovative solutions. 4. Enhancing learning and growth: Discovery projects provide a hands-on learning experience, allowing participants to gain new knowledge and skills through trial and error. This experiential learning leads to a deeper understanding of the subject matter and promotes personal and professional growth. Overcoming Common Challenges Of course, it can’t all be rainbows and daisies so it is normal that there are some impediments, but being aware of what can go wrong, helps to recognise and mitigate challenges on time. 1. Time constraints: Discovery projects require time for exploration and experimentation, which can be challenging with a set deadline and budget. Keeping the team and client focused is important to achieve the desired outcomes. 2. Resistance to change: Some individuals may be resistant to the idea of vague projects, fearing a potential lack of structure or accountability. To address this concern, the benefits of discovery need to be emphasized and the team needs to have clear guidelines for their role’s responsibility, deliverables, and the project’s scope and goals. 3. Fear of failure: The possibility of failure can be intimidating, especially in a professional setting. A culture of learning from failure must be supported and the lessons learned from unsuccessful experiments should be a driver to succeed in future projects with similar situations. Discovery Projects — Tips and Tricks for PMs It is important to have an engaged team working on the discovery project and keeping the team motivated and inspired might be challenging at times. The team needs to have confidence and trust in each other to be open and feel safe to share their ideas. 1. Define the scope: It’s essential to establish a general scope or theme to guide the exploration. This can be a broad topic, such as detecting what extra value the product can give to the customer and finding a solution through user research, competitors analysis, usability testing, or a specific problem – like improving customer satisfaction by remodelling the user experience through simplifying the user flow of the website. The team will be able to keep a better focus on what is really important for the project and a clearer understanding of their purpose. 2. Boost the team’s diversity: A diverse team brings different perspectives, experiences, and skills to the project, increasing the likelihood of innovative solutions. Encourage collaboration and open communication among team members. 3. Provide resources and support: Make sure that the team has access to the necessary resources, such as research materials, tools, and technology. Provide support and guidance as needed, but allow the team to take ownership of the project and make decisions independently. 4. Encourage experimentation and failure: Emphasize the importance of experimentation and learning from failure. Encourage team members to take risks and test new ideas, even if they don’t always lead to success they can be a great learning experience. 5. Reflect and share findings: At the conclusion of the project, encourage the team to reflect on their experiences, discuss their findings, and share any new insights or ideas. This reflection process can lead to further innovation and growth. Never forget that behind each requirement, each estimate, each proposal are people, they are the ones that can bring the highest benefit to each output, they are the ones who make or break the project. Always take into account the persons and their personality and capability when planning. More on how Project Managers can make a harmonious team is in my blog The Many Angles of the Project Management Triangle . Conclusion Discovery projects offer a unique opportunity to foster creativity, innovation, and learning in various settings. By providing an exploratory environment, individuals can develop essential skills, collaborate with others, and uncover new ideas and solutions. Embrace the power of discovery projects and unleash the potential of your team! Ana Cerimovic Project Manager and Project Delivery Team Lead looking after the PM triangle but seeing much more than just budget, scope, and timeline. A happy team is a productive team and people are the key to the project’s success. That is why I like exploring the human aspect of Project Management and its effect on the overall project output. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 6, 2025 — 11 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 6, 2025 — 11 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The Hidden Complexity of Managing IT Talent - Tech Consulting and Software Engineering URL: https://q.agency/blog/the-hidden-complexity-of-managing-it-talent/ Most non-tech companies struggle with managing IT talent. Here’s what it really takes to run a competitive engineering team. The Hidden Complexity of Managing IT Talent | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The Hidden Complexity of Managing IT Talent The Hidden Complexity of Managing IT Talent March 29, 2026 — 10 min read Most non-tech companies think their biggest challenge in managing IT talent is finding the right developer. It’s not. The real problem isn’t the hire . It’s everything surrounding it. The interview process you run once a year, competing against companies that run it hundreds of times. The retention battle against employers offering equity, cutting-edge stacks, and a community of peers. The architectural decisions made in isolation, without the pattern recognition that only comes from seeing the same problems solved (and broken) across dozens of different industries. Running a competitive software engineering team from inside a non-tech company is a fundamentally different game. And most organisations don’t realise they’re losing it until the damage is already done. Here’s what that complexity actually looks like, and why it’s so hard to solve from the inside. Let me break down what it actually takes to run a competitive software engineering team, and why most non-tech companies struggle with it. 1. Hiring Is a Completely Different Game You’re interviewing 1 or 2 IT positions per year. Specialised software companies like Q conduct hundreds of interviews. When you post a job for a senior backend engineer, you’re competing against tech companies offering: Remote-first work policies Equity compensation The latest technology stacks Work on cutting-edge problems A community of peers to learn from Your HR team is trying to assess technical skills they don’t fully understand. Can this candidate architect a microservices system? Do they understand database optimisation? Can they lead a team through a cloud migration? Without technical interviewers who’ve done this hundreds of times, you’re essentially guessing. You’ll either pass on great candidates because you can’t recognise their potential, or hire the wrong people because they interviewed well but can’t deliver. The cost of a bad hire in software engineering is massive. Not just the salary. The technical debt they create, the time spent fixing their mistakes, the damage to team morale, and the delay to your roadmap. One poor architectural decision can cost you years and millions to unwind. Specialised software companies have: Technical interviewers who speak the language Standardised assessment processes refined over hundreds of hires Networks to source passive candidates Employer brands that attract top talent Compensation benchmarks across markets You’re bringing a knife to a gunfight. 2. Retention Requires More Than Salary Let’s say you successfully hire a talented engineer. Now you need to keep them. The best engineers don’t stay for salary alone. They stay for: Growth opportunities – learning new technologies, taking on bigger challenges, advancing their careers Interesting problems – working on projects that stretch their abilities Modern tech stacks – nobody wants to maintain legacy systems in outdated languages Peer learning – working alongside other strong engineers who push them to improve Clear career progression – understanding where they can go in 2, 5, 10 years When you have a team of 3-5 engineers working in isolation, you can’t offer most of this. Your senior engineer has nobody senior to learn from. Your mid-level engineer sees no path to becoming a senior because there’s only one senior role and it’s filled. Your frontend specialist wants to learn backend, but there’s nobody to teach them, and no projects that allow it. The worst thing that can happen, and we do see that more often than not, is when a developer actually accepts working without all of the above and stays in place for 10+ years. When we encounter such an environment, as a rule, we always encounter greatly outdated systems, security issues, and huge costs in maintenance of old technologies. Meanwhile, at a company like Q with 300 engineers: Junior developers learn from seniors and principals Engineers move between projects to learn new domains and technologies There’s a clear career ladder from junior to principal engineer Communities of practice share knowledge across the company People work on diverse problems across different industries After 18-24 months, your talented engineer looks around and realises they’ve stopped growing. They leave for a company that can offer what you can’t. You’re back to hiring. And now you’ve lost institutional knowledge too. 3. Technology Breadth vs. Depth Here’s a common scenario: You need to build a new data pipeline to process customer information. It requires expertise in: Python for data processing Apache Kafka for event streaming Kubernetes for orchestration Terraform for infrastructure PostgreSQL optimisation You have three full-stack engineers who primarily work in JavaScript and React. None of them has deep expertise in these areas. What do you do? Option A: Ask your existing team to learn these technologies on the job. Result: They’ll cobble something together that technically works but is fragile, hard to maintain, and doesn’t follow best practices. You’ve now accumulated technical debt. Option B: Hire a data engineer with this exact skill set. But you only need them for 3-4 months, and you can’t afford to hire a specialist full-time for a short-term need. Usually that ends up as Option A. Option C: Hire a contractor. They build what you need but have no loyalty to your company, don’t understand your business context deeply, and disappear once the contract ends. If something breaks in six months, nobody knows how it works. This is the technology breadth problem. Modern software requires specialists across dozens of domains: Backend engineering (and within that: APIs, databases, caching, queuing, etc.) Frontend engineering (React, Vue, Angular, mobile frameworks) DevOps (AWS, Azure, GCP, Kubernetes, CI/CD) Data engineering (pipelines, warehouses, analytics) Security (authentication, authorisation, compliance) AI/ML (model training, deployment, monitoring) No small in-house team can cover this breadth. So you either: Go without the capabilities you need Build things poorly with generalists Constantly hire and fire contractors A specialised software company maintains this breadth because we work across dozens of clients simultaneously. When you need Kubernetes expertise, we have engineers who’ve deployed dozens of clusters. When you need to optimise PostgreSQL, we have DBAs who’ve tuned databases at scale. When you need AI integration, we have ML engineers who’ve shipped production models. You get the specialist when you need them, without the overhead of keeping them on payroll when you don’t. 4. The Single Point of Failure Problem This might be the most dangerous issue: your entire platform runs on the knowledge of one or two people. You hired a talented architect five years ago. They designed your entire system. They know every component, every integration, every quirk. They’re brilliant. And you’re terrified they’ll leave. Because if they do, nobody else fully understands the system. You’ll spend months trying to document their knowledge. And yes, you’ll make mistakes. You’ll be afraid to change anything because you don’t understand the downstream impacts. This is the “hero developer” problem, and it’s incredibly common in companies that build small internal IT teams. Even worse: what if they made bad architectural decisions early on? Maybe they chose a technology that’s now obsolete, or Maybe they built a monolith that should have been microservices. Maybe they hard-coded things that should be configurable. Nobody else on your team has the seniority or expertise to challenge those decisions. So you’re stuck with technical debt that compounds over time, making every new feature harder and slower to build. In a specialised software company, this doesn’t happen because: Multiple engineers work on each project, so knowledge is shared Code reviews ensure quality and catch poor decisions early Technical leadership with decades of experience guides architecture Documentation standards ensure knowledge is captured Team rotations mean no single person is irreplaceable When an engineer moves to a different project or leaves the company, there’s continuity. The system doesn’t depend on any single person’s brain. 5. The Missing Infrastructure Beyond the obvious challenges, there’s an entire infrastructure required to run a high-performing engineering organisation that most companies don’t realise they need: Performance Management for Engineers : How do you evaluate a software engineer’s performance? Lines of code written? That’s a terrible metric — the best engineers often write less code, not more, because they solve problems elegantly. You need competency frameworks that define what “good” looks like at each level. You need technical assessments that measure real capability. You need 360-degree feedback from peers, not just managers. Most HR teams have no idea how to do this for technical roles. Continuous Learning Infrastructure : Technology changes faster than any other field. The JavaScript framework that was cutting-edge three years ago is now obsolete. The database optimisation techniques that worked at your current scale won’t work when you 10x. Your engineers need: Time and budget for online courses and certifications Internal academies that teach new technologies Conference attendance to stay current with industry trends Lunch-and-learns where engineers share knowledge Dedicated time for experimentation and learning Most companies give engineers access to an online learning platform and call it done. That’s not enough. Career Pathing : What does the career ladder look like for your engineers? In most non-tech companies: Junior Developer → Developer → Senior Developer → … CTO? That’s not a career path. That’s a dead end. Engineers need to see: Individual contributor tracks : Junior → Mid → Senior → Staff → Principal → Distinguished Engineer Management tracks : Tech Lead → Engineering Manager → Director → VP Specialist tracks : becoming the go-to expert in security, data, infrastructure, etc. They need to understand what skills and experience are required to reach each level. They need mentorship from people who’ve walked that path. Without this, your best people leave. Technical Leadership . Who’s making your technical decisions? Your CTO who hasn’t written code in 10 years? Your senior developer who’s never architected a system beyond your company’s walls? Software engineering requires leadership from people who: Have built systems at scale (millions of users, terabytes of data) Understand modern architecture patterns (microservices, event-driven, serverless) Have made and learned from major technical mistakes Stay current with rapidly evolving best practices Can mentor engineers to level up their skills This kind of leadership is rare and expensive. Most companies can’t attract or afford it for a small internal team. Centres of Excellence. Here’s what most companies don’t realise they’re missing: the ability to learn from patterns across multiple projects. At Q, our Centre of Excellence teams work across dozens of clients simultaneously. They see: Which architectural patterns work and which create problems How different technology choices play out over time What works for teams of 3 vs. 30 vs. 300 engineers How to optimise CI/CD pipelines, reduce bugs, improve velocity Where technical debt typically accumulates and how to prevent it Key Takeaways This cross-pollination of knowledge is impossible in a single-company IT team. Your engineers only see your problems, your codebase, your constraints. Our engineers see the same challenges across 50 different companies and bring those learnings to each client. When you hire one brilliant architect, you get their experience. If or when you partner with Q, you get the collective experience of 292 engineers working across dozens of industries. To bring broader engineering perspective and proven delivery experience into your team, contact us . Hrvoje Gorajscan As CEO of Q, Hrvoje, also known as Harry G, focuses on building digital products that matter and partnerships that move the business forward. His role is to keep shaping a company where strategy, technology, and design work together naturally, with a clear focus on lasting value. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 29, 2026 — 10 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 29, 2026 — 10 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The importance of a good business proposal when pitching for a project - Tech Consulting and Software Engineering URL: https://q.agency/blog/the-importance-of-a-good-business-proposal-when-pitching-for-a-project/ Learn why a well-structured business proposal matters when pitching for projects and how it can help win clients and stand out from competitors. The importance of a good business proposal when pitching for a project | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The importance of a good business proposal when pitching for a project The importance of a good business proposal when pitching for a project January 17, 2019 — 3 min read If you work in sales you probably know what needs to be done in order to close out a deal. Sometimes that process can be long and exhausting, however, sometimes everything can happen really fast and your input is not so substantial as it is for some other leads/opportunities. Nevertheless, meticulous preparation is always a key part in order to land a deal and everything starts from lead generation and finding prospects that would benefit from the services or products you oer. I personally believe the service or a product you oer needs to have real value for the customer and this is the biggest key to success. Afterward, a face to face meeting is always better than any call or e-mail exchange because it gives the prospective client a chance to connect the face to a name. From my experience working in sales, this significantly increases the chances that these companies will remember you and your company next time they have a project in their pipeline. Even when you have an opportunity to pitch for a project there is usually still a long way before you actually start working on the project because for the most part you are probably not the only one pitching for the same piece of work. If you don’t have a long term partnership with a client, companies usually approach a couple of other companies for the same project and that means you are competing with others which obviously makes the situation a bit harder. That is the main reason why preparing a detailed and structured proposal is a necessity in today’s business and it will definitely make you stand out in comparison to others. Clients want to know what is the eort you made in order to solve the problem they have and of course how much time you need to spend in order to achieve that goal. Our way Here at Q, we use software for proposals that actually tells us how much time our clients are spending on dierent parts of the proposal and this provided us with valuable information. The answer to that question is definitely the price. Second to the pricing structure is almost always the approach we take in order to prepare and finish the project. Clients often want to know how many milestones are needed for the completion of the project because they also have deadlines they need to follow so it’s important to work hand in hand with them to successfully finish the project in a timely manner. Third but also very important is the previous experience you have working on similar projects and it’s important to emphasize this in the proposal because that gives a guarantee you have the know-how necessary to successfully finish the project. A lot of clients are price sensitive and they will go for the budget-friendly option, however, there were several occasions where the client appreciates the process, the structure, and the problem-solving capability. A good proposal is also in some way a reflection of your company so you definitely want to present yourself in the best possible way when pitching for a project. This is why I believe companies need to take into consideration making a detailed approach to every client and their business and with a bit of luck, you will successfully land a deal in no time. Will Starjacki Our busy salesman is running a whole UK region market. Smooth talk and a smooth sales process are what Will is known for. Will is also the biggest basketball enthusiast and leads a basketball social network platform. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 17, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 17, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Q agency is Best Recommended B2B Leader in Croatia and Serbia URL: https://q.agency/blog/the-manifest-2022-awards-q-agency/ Q agency is recognized as Croatia and Serbia’s best-recommended B2B leader by The Manifest! Q agency is Best Recommended B2B Leader in Croatia and Serbia AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The Manifest Names Q agency as 2022’s Best Recommended B2B Leaders in Croatia and Serbia The Manifest Names Q agency as 2022’s Best Recommended B2B Leaders in Croatia and Serbia October 6, 2022 — 2 min read When it comes to development and design , no one comes close to Q agency. Based in Zagreb, Croatia, our team is dedicated to helping companies solve their unique challenges using cutting-edge technologies. From mobile platforms to programming projects, our team is ready to help you scale, optimize, and innovate. We’re considered one of the fastest-growing agencies in Europe because of our clients’ tremendous support. It’s also because of them that we’ve been recognized as Croatia and Serbia’s best recommended B2B leader by The Manifest ! According to the platform’s report, our team is trusted and highly rated for software development, web development, mobile app development, user experience, design, and digital design for 2022! Being recognized for our clients’ great reception and referrals means the world to us. When we started this journey back in 2013, we knew there would be huge challenges ahead for us. We can’t help but be extremely proud of where we are today with our clients. It’s been a huge privilege for us to have worked with incredible partners like 265 Media, BodymechaniX, and BYOD . Moreover, The Manifest is a business news platform that highlights projects accomplished by B2B providers and guides browsers through different industries. The website’s most recommended company awards spotlight the superb relationships between service providers and their respective clients. The awardees are determined based on the number of stellar testimonials and referrals they’ve earned throughout the past year. We’d like to take this opportunity to thank every one of our supportive clients and hard-working team members. All of you helped make this a reality. This award is truly humbling and fantastic for us. Let’s build inspiring digital products together. Make an impact with Q agency. Send us a message and let us know how we can collaborate. Mihaela Cudina GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 6, 2022 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 6, 2022 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The Many Angles of the Project Management Triangle - Tech Consulting and Software Engineering URL: https://q.agency/blog/the-many-angles-of-the-project-management-triangle/ Timeline, scope, and budget - is this really all the PM is about? This blog might be a shocking discovery, but prepare to be enlightened. The Many Angles of the Project Management Triangle | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The Many Angles of the Project Management Triangle The Many Angles of the Project Management Triangle May 3, 2023 — 9 min read Imagine taking a train from point A to point B, paying a certain price for that ride, and arriving on a precise schedule. Seems like this ticks all checkboxes, and all the requirements are met, so what’s the big deal ? But what happens with the experience, with the quality of the trip for the passengers? Wouldn’t it be better if the train had a bar where the passengers could enjoy a drink or two, a kind waiter willing to listen to their stories, tidy coupes, and clean windows to enjoy the trip and view? Perhaps even a first-aid kit does not sound like a wild thing to have available. Suddenly, the stakes are a bit higher, it is not enough to just tick the checkboxes, it is about the comfort, trust, and safety the passengers feel while on board the train. Timeline, scope, and budget are the three obvious angles of the Project Management triangle. There is a big part of Project Management that can’t be quantified or measured straightforwardly as it seems. It is important to deliver the project within the agreed scope, timeline, and budget, but that’s not all there is . The output needs to be of good quality, and here lies that big part hidden inside the PM triangle that takes most of the Project Managers’ time. In this context, the output is not only the quality of the end product delivered to the client, it is so much more than that – it is that experience of the train ride. It is how the project team is working together, how they communicate , the relationship with the client, how the client perceives the team, and vice versa, that subjective view each and every project member has and how to combine all of that, not only to deliver the project but to have a content team and client looking forward to working together again. The 5 P’s of Project Management There are a lot of different “P”s in Project Management, just a fair warning before you start googling, but below are listed the ones this blog is focused on: Plan Process Possesions Profits People Plan Planning is essential to make the project successful, Project Manager needs to plan the project roadmap, resources, and budget to make sure the goals are realistic and achievable. Project activities, strategy, risk management, and much more is needed to be planned in advance. Process All processes need to be taken into account when preparing the project – each department included in the project will have its own processes which need to fit together , not only on the company level but with the client’s processes as well. Project Manager is responsible to establish ways of working that will fit the project needs. Possessions As harsh as it may sound, possessions are the company’s assets and capital – intellectual, economic, marketing, and human capital. In ideal circumstances, companies invest economic capital in human, intellectual, and marketing capital, assuring the maximum value for the company. It is the same in the projects – teams can learn from each other, grow their own intellectual capital and increase their own value. Profits It’s all about the ka-ching. Good management will always strive for generating long-term profits , and Project Managers will put their efforts into upselling company services, teams, or scope. Last, but not least, the stars of this blog will have their own chapter, so keep reading about the 5th P. People Books, courses, workshops, everything is handed on a plate, each and every process described, methodologies explained, and all that sounds great in theory . Every Project Manager knows how to prepare the project roadmap, keep track of the budget and remind teammates to log their time at the end of the day. There are many templates, procedures, and checklists that make Project Managers’ repetitive work easier. It’s ok to have a cheat sheet, developers have Stack Overflow, kinda same, right? The above-mentioned 4 Ps are a piece of cake compared to managing the 5th P – People. That is a whole different story, this is the aspect that really makes or breaks the project and the Project Manager too. Imagine having a difficult client, or a colleague who really does not want to cooperate. All the planning, processes, and procedures will fall through. That’s where the Project Managers’ skills are really forged – mitigating risks related to people. How do you mitigate the effect of someone’s bad day or week ? How do you plan characters and personalities into the roadmap ? Every team has its own individual ecosystem, and within it, each and every member is an important part of the team’s success and growth, not only professionally, and intellectually, but personally as well. Surrounded by Idiots Before a riot starts, this is just a title of a book written by Swedish communication expert Thomas Erikson. This book describes what we’ve all been through – like nobody else makes sense and we are the only ones who know what we’re talking about. Take a second to think about this – isn’t this how we all feel sometimes? But how many times have we put ourselves in our teammates’ or clients’ shoes before we decided to dismiss them just because they don’t understand our proposal, solution, or question? A psychologically safe and healthy work environment is something a Project Manager needs to have in mind as well while managing the project. Every small salty remark, eyebrow raised, sigh, or shrug must stay on the Project Managers’ radar. All the differences of all the team members and clients need to be recognized and respected to have a functional and happy team on the project. To provide the context of the types of people and how to best understand them, below is a short description of each type differentiated by color. Red – My way or the highway A person with a red personality may come across as a strong, ambitious, and self-confident person, a natural leader , so to say. Their way is the only way to quickly solve a problem, nobody else can take charge as they can and anybody who disagrees or wants to further discuss is immediately rewarded with a side-eye. But a Project Manager can’t let that person hijack every meeting, every decision, and every opinion. The points Reds make need to be validated, understood, and acknowledged because they really work hard and can achieve big things – if patiently managed and directed to the goals of the project and team. Reds need to realize that the whole team can do so much more than one individual by themself , and making them aware of that is not an easy task for a Project Manager. Yellow – Why so serious? There is always that jolly, chatty person , the witty one who has the best topics while waiting for the meeting to start. The solutions and answers they offer are so simple, why is everyone asking them all of these questions? The team might not understand how to get to the solution Yellows suggests, but that is not their problem – others need to figure it out themselves – they are off to plan their weekend. Project Manager’s mission is to keep the Yellows focused and let them talk because they really do have great ideas, but they need to be reminded of and directed back to the topic . More importantly, Yellows must learn to become a patient listener before insisting that the whole team just accepts their solution, and Project Manager has a big role in making them understand what the team is really saying and how their ideas can be best used in the project. Blue – Show me the numbers! “What if…? What happens when…? Can you be more precise? I need exact data to make the decision. I don’t do guesstimates .” – these are the words you might hear from a Blue person. Their analytical skills are on another level and they need time to process and wrap their mind around the issue to be able to provide answers. The more they are pushed into making what they perceive as haste decisions, the more stressed they become and delay their decision even further. Project Manager must find that thin line between providing enough information and time for Blues to make decisions or give answers they are comfortable with , but without stalling the rest of the team or project progress in general. Green – Let’s all just get along The only way to understand others is by taking a walk in their shoes. Fight is never an option, flight is their action of choice. Routine is the safe zone, let’s not do anything crazy. Greens are the most adaptable and can find a common language with all the above-mentioned colors. Some would mistake their adaptability for passiveness, their aversion to conflicts for weakness, but all the Greens really want is that everyone around them to be happy . Doesn’t seem like an issue, right? Wrong. With the team of greens, Project Manager will need to put in extra effort into enabling them to stand for their opinions and decisions instead of throwing in the towel and agreeing with other suggestions just to keep peace in the team. At times, even have the role of their spokesperson because Greens might not be ready for the feedback the team will have on their suggestion. More a prism, less a triangle A reasonable thing to expect is that every adult, working person will know how to handle themself and be professional in any business occasion . We are not (yet) robots and we all need to know when our professional characters need to be engaged and when we can let our other traits come into the spotlight. However, Project Manager is not responsible to handle only themselves, but the whole team and the client too. Our job might not be technical but must be tactical . It is understandable that we won’t completely match with a single color, we all have characteristics that might be described in another color but that can only help us to have more understanding for others and become better colleagues . Everyone can find a balance that works best for them, maybe a purple or orange color, that perfect mix of what makes our best professional persona. Conclusion One of the silent Ps of Project Management is definitely Psychology , every team member will project their color, just like the light does when it hits the prism, and that is what makes a Project Manager’s job so much more than just chasing budgets, timelines, and scopes. The ultimate achievement is to have all colors in perfect harmony – a happy and productive team delivering top-quality products and experiences to clients. Ana Cerimovic Project Manager and Project Delivery Team Lead looking after the PM triangle but seeing much more than just budget, scope, and timeline. A happy team is a productive team and people are the key to the project’s success. That is why I like exploring the human aspect of Project Management and its effect on the overall project output. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 3, 2023 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 3, 2023 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How a Bad Product Owner Will Kill Your Project and Burn Money URL: https://q.agency/blog/the-most-important-person-who-can-kill-your-project-and-burn-all-your-money-the-product-owner/ "Bad product owners burn money, destroy team morale, and kill projects. Choose wisely." Read the full blog post by Q's CTO Harry G. How a Bad Product Owner Will Kill Your Project and Burn Money AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The Most Important Person Who Can Kill Your Project and Burn All Your Money – the Product Owner The Most Important Person Who Can Kill Your Project and Burn All Your Money – the Product Owner May 14, 2026 — 24 min read In my career, I worked for six startups – always as lead developer, lead engineer, or CTO. I also worked for two product companies before starting my own agency, which later merged into Q. Between my own company and Q, I’ve worked on, managed, overseen, or deep-dived into dozens of projects. This article shares what I’ve identified as the single biggest project killer: a bad Product Owner . Why PO is on the Client Side (and Why That Matters) When you’re an agency like Q, you work with a Product Owner. Either the PO is on the client side, or the PO is on your side. My experience tells me it’s better if the PO is on the client side, and here’s why: skin in the game . When the PO is internal to the client, they own the consequences. They face their stakeholders daily. They feel the burn when money is wasted. They can’t hide behind “the agency didn’t deliver.” This creates the right incentives – they’re forced to be decisive, organised, and accountable because their ass is on the line. When we provide the PO, we create a buffer that lets clients avoid hard decisions. They can delay, waver, change their minds, and blame us when things go sideways. We’ve tried both models. The client-side PO model, when done right, produces better outcomes. What Makes the PO Role So Difficult The PO role is genuinely hard. It requires a rare combination of skills: Strong communication – not just talking, but translating between business stakeholders who speak in revenue and outcomes, and technical teams who think in systems and constraints. Firmness – the ability to say NO and make it stick. To stakeholders who want everything. To developers who want to rebuild the entire stack “the right way.” Organisation – maintaining clarity across hundreds of moving pieces without drowning in process. Drive – pushing when the team is stuck, rewarding when they deliver, and knowing the difference. I’ve been in this role many times. More often than not, I took it rather than had it given to me, because I saw what happens when there’s a vacuum. What a Good PO Actually Does A Product Owner is the mini-CEO of the product. Here’s what that means in practice: 1. Align internal stakeholders – This can be brutally complicated and stressful, especially when stakeholders are on different sides, related through family, or tangled in politics. Someone has to cut through that mess and get everyone moving in the same direction. 2. Own the product – Say when something will be developed, why, and in what order. Then defend those priorities to both stakeholders and the team. This isn’t consensus-building. It’s decision-making. 3. Pass on vision in digestible chunks – Break down the big picture into pieces small enough to execute, but not so small the team loses context and drowns in micro-questions. This balance is harder than it sounds. 4. Make hard decisions – Cut when a cut is needed. Push when momentum is flagging. Don’t waffle. 5. Know the product state at 2 AM – Where is the product right now? What’s in the backlog? What’s the holdup? A good PO doesn’t need to check Jira to answer these questions. 6. Absorb the heat – Blush before stakeholders when something isn’t done. Blush before the tech team when something stupid is said by the business side. Take the hits that come from both directions. 7. Own outcomes – When shit goes wrong, it’s on them. Not the developers, not the stakeholders. The PO. The Pattern We Keep Seeing The biggest issues, biggest challenges, and most expensive disasters we’ve had – both financially and relationally – come from clients who either didn’t choose the right person for the PO role, or chose someone for the wrong reasons (politics, family, availability, cheapness). Red Flags: How to RecogniSe a Bad Product Owner Not strong enough to say NO – They fold under pressure from stakeholders. Everything becomes a priority, which means nothing is. Organisationally chaotic – They create 1,500 tasks with 400 circular references. The backlog is a dumping ground, not a roadmap. Domain ignorance – They don’t understand the business domain deeply enough to make trade-offs. Every decision requires a committee. Tech illiterate – They don’t need to code, but they need to understand high-level technical constraints. When they don’t, they promise impossible things and blame developers for “not trying hard enough.” Can’t align stakeholders – Instead of aligning them internally, they bring us in to mediate. This never works. We’re outsiders. We don’t have the authority or context to settle internal politics. Allows direct stakeholder-to-dev communication – They let stakeholders bypass them and go straight to developers. This creates chaos. Priorities shift hourly. The team gets contradictory instructions. No forward visibility – They don’t have a backlog, roadmap, or strategy prepared at least three months out. Everything is reactive, firefighting, last-minute. FAANG ego – Especially dangerous with POs who worked at big tech companies. They assume what worked at Google with unlimited resources and 18-month release cycles will work in a startup with six months of runway. It won’t. Context mismatch – A PO who ran a mature, long-lived product for years gets thrown into a startup. They bring mature-product thinking to a place that needs scrappy MVP mentality. The result: over-engineering, paralysis by analysis, burning runway on polish nobody needs yet. What a Good PO Looks Like Clear roadmap upfront – They show up with guidelines, priorities, and a vision that makes sense. Gives the big picture – They spend time with the team explaining WHY, not just WHAT. This isn’t wasted time. It’s how you get a team that can make smart micro-decisions without constant hand-holding. Works on motivation – They understand what the team needs to stay engaged and productive. They notice when morale is dropping and do something about it. Understands needs – Not just business needs, but what the team wants and needs to do their best work. Business AND financial literacy – They understand the domain, but they also understand burn rate, CAC, LTV, and why we can’t spend six months building the perfect solution. Owns decisions and consequences – When something goes wrong because of a call they made, they own it. No finger-pointing. The Inevitable Blame: “It’s Always the Dev Team’s Fault” When projects go sideways with a bad PO, here’s what we hear: “They didn’t deliver” “The quality was subpar” “They don’t understand the business” “They’re overengineering” “They’re making it too complicated” “Why do I have to explain things multiple times?” That last one is particularly irritating. Why You Need to Explain Things Multiple Times (And Why That’s Normal) After explaining how knowledge and neurons actually work, we usually get asked the same question again: “But why do we need to explain it multiple times?” So let me explain clearly: This primarily refers to existing projects with complexity. It is necessary to explain things multiple times. Sometimes over and over in a single session when a matter is complex. Usually it’s today, then again in a month, because the level of knowledge of the person on the receiving end changes . You need to tie things together as their understanding evolves. Knowledge isn’t static. It builds. Context from three months ago connects with new information today, and suddenly something clicks that didn’t before. Here’s what stakeholders usually don’t realise: they aren’t fully aware of how their own systems work under the hood . They know what they need it to do. They don’t know how it actually does it, what the constraints are, or why changing X breaks Y. When we explain the same thing twice, we’re not repeating ourselves. We’re building on previous understanding with new context. Two Projects That Illustrate Everything Wrong Project 1: The Family Business Death Spiral Small, family-owned business. Three main stakeholders: husband, wife, and a relative on the IT side. They made a terrible mistake: they brought in a junior PO because he was related to the family. She couldn’t align the stakeholders internally. The husband wanted financial controls. The wife wanted shiny features. The IT relative kept saying what was and wasn’t possible, but nobody listened. This torment lasted over two years. At some point, we were running in circles. The client was unhappy. Our team was frustrated and unmotivated. Hundreds of questions were raised. Very few got answered. The core problem: the stakeholders needed to internally align first . They needed hundreds of hours of workshops to agree on how they wanted the new system to work alongside the old system, with all the dependencies mapped out. The PO couldn’t drive that alignment. She didn’t have the authority, the skill, or the backbone. We raised this issue more than ten times. The stakeholders didn’t want to even consider there was anything wrong with their PO. At the end, we pulled the plug. They were spending money, but no real value was being generated. That’s not the business we’re in. If we’re not clearly creating value, it doesn’t make sense to continue. Project 2: The FAANG Ego Trip A startup led by two ex-FAANG employees. They thought they knew everything. One founder handled business and acted as PO. The other was tech and jumped in as PO depending on focus area. We made the mistake of assuming that because they came from top tech companies, we were in safe hands. What actually happened: Gold plating everywhere – Endless polishing for no reason. Features implemented with no need to launch. After more than a year, we discovered the core business idea had a fundamental issue and wasn’t properly implemented. Constant complaints about the dev team – “Not senior enough. Not working hard enough. Don’t believe in the product.” All bullshit. The team was solid. The direction was broken. Massive over-engineering – They prepared everything for 10,000 concurrent users. Guess what? Six months after launch, there was barely one concurrent user. The “rockstar developer” delusion – When we started, they requested rockstar developers. Here’s the truth: you don’t need rockstar developers in a startup . You need a solid senior to make architectural calls, a solid mid to build reliably, and a motivated, ambitious junior to move fast and learn. That’s the team composition that works. The FAANG POs brought big-tech thinking to a scrappy startup. They optimised for scale that didn’t exist. They built for problems they didn’t have. They burned runway on perfection when they needed validation. The Real Cost of a Bad PO Bad product owners don’t just slow projects down. They kill them. Money burned – Every sprint running in circles is cash out the door with no value created. Team morale destroyed – Good developers leave when they’re building the wrong things, being blamed for failures that aren’t theirs, and watching their work get thrown away because priorities changed again. Opportunity cost – The time spent building the wrong thing is time you didn’t spend building the right thing. In a startup, this can be fatal. Relationship damage – Bad projects with bad POs poison the client-agency relationship. Trust evaporates. Every conversation becomes adversarial. What This Means If You’re Hiring a PO Don’t hire based on pedigree. FAANG experience can actually be a red flag if the context doesn’t match. Don’t hire based on availability or politics. The fact that someone is family, or free, or already on payroll, doesn’t make them the right PO. Look for decisive people who’ve been in the fire. Have they owned a product that shipped? Have they made hard trade-offs under resource constraints? Have they aligned messy stakeholders and lived to tell about it? Test their backbone. Can they say no to you? If they fold in the interview when you push back, they’ll fold when your stakeholders push back. Assess their technical literacy. They don’t need to code, but can they understand system constraints well enough to have a technical conversation? Or do their eyes glaze over? What This Means If You’re the PO Own it. This is your product. When it succeeds, you did your job. When it fails, it’s on you. Not the developers, not the stakeholders. You. Build the muscle to say no. Most of your job is figuring out what NOT to build. Practice saying “not now” and “not ever” until you can do it without flinching. Invest in understanding both sides deeply. Learn enough about the business to make trade-offs. Learn enough about the tech to understand constraints. The gap between these two is where you live. Create clarity. Your backlog should be a roadmap, not a wish list. Your priorities should be clear enough that the team can make decisions without you in the room. Face the fire. When stakeholders are unhappy, don’t hide behind the dev team. When the dev team is frustrated, don’t hide behind stakeholder demands. Absorb the heat from both sides and translate it into decisions. The PO role is hard. It’s high-pressure, high-stakes, and filled with no-win situations where someone will be unhappy no matter what you choose. But when done right, a good PO is the difference between a project that ships value and a project that burns cash until someone pulls the plug. Choose wisely. The PO Readiness Checklist: Your First Week If you’re stepping into the PO role, here’s what needs to exist before you write a single ticket: Documents That Must Exist Product vision document (1-2 pages max) – What are we building? Why does it matter? Who is it for? What does success look like in 6 months, 12 months, 24 months? Stakeholder map – Who has decision authority? Who has veto power? Who needs to be informed? Who’s just noise? Map the power structure so you know who to align. Constraint document – What’s the budget? What’s the timeline? What’s non-negotiable? What tech debt or legacy systems do we have to work with? Success metrics – What are we measuring? Revenue? Users? Engagement? Retention? Define it now, not six months in when someone asks “is this working?” Meetings You Must Schedule Stakeholder alignment session (Week 1) – Get everyone in a room. Force them to agree on priorities. Document disagreements. Resolve them now or accept that you’ll be paralyzed later. Tech architecture walkthrough (Week 1) – Sit with the tech lead. Understand what exists, what’s possible, what’s expensive, what’s fragile. You don’t need to understand the code, but you need to understand the system. Team expectations session (Week 1) – Meet the team. What do they need from you? What slows them down? What motivates them? How do they want to communicate? Weekly stakeholder sync (ongoing) – Lock this in. Same time, same day. Non-negotiable. This is where you manage expectations and prevent surprises. Questions You Must Answer Before Sprint 1 What’s the MVP? Can you describe it in three sentences? What are we NOT building in V1? What’s the riskiest assumption we’re making? What could kill this project? Who’s the user we’re designing for? Can you describe them specifically? What happens if we launch and nobody uses it? If you can’t answer these, you’re not ready to start building. When Your PO Is Failing: Intervention Tactics You’ve realised your PO is weak. Maybe they can’t say no. Maybe they can’t align stakeholders. Maybe the backlog is chaos. Most companies won’t fire a PO mid-project. So what do you actually do? The Conversation Script Have this conversation privately, not in front of the team: “I want to talk about how we’re working together. I’m seeing [specific behavior: unclear priorities, circular discussions, direct stakeholder-to-dev communication]. This is creating [specific impact: team confusion, rework, frustration]. Here’s what I need from you going forward: [specific change: a single prioritised backlog, all stakeholder input filtered through you, a firm roadmap for next quarter]. Can you do that?” Be specific. “You need to be more organised” is useless. “I need a prioritised backlog by Friday with no more than 20 items in the next sprint” is actionable. When to Coach vs. When to Escalate Coach when: They have the right instincts but lack process They’re overwhelmed but willing to learn The team still trusts them They own mistakes when confronted Escalate when: They deflect blame to the dev team repeatedly They can’t or won’t say no to stakeholders The team has lost confidence They’re politically untouchable and incompetent Guardrails When You’re Stuck With a Bad Product Owner If you can’t replace them, contain the damage: Create a technical veto – Give your tech lead the authority to say “this is technically impossible” or “this will take 6 months, not 2 weeks” and make it stick. Impose structure – Force sprint planning. Force backlog grooming. Make them follow a process even if they don’t want to. Limit stakeholder access – All requests go through the PO in writing. No hallway conversations. No direct Slack messages to developers. Weekly written status – Make the PO write a weekly summary: what shipped, what’s blocked, what changed. Force clarity. Shorten sprint cycles – Go from 2-week sprints to 1-week. Bad POs thrive in ambiguity. Shorter cycles force decisions. Interview Questions That Actually Expose a Weak PO Pedigree doesn’t matter. Experience at FAANG doesn’t matter. What matters is whether they can do THIS job in THIS context. Question 1: “Tell me about a time you had to kill a feature that stakeholders wanted.” What you’re testing: Can they say no? Red flag answers: “I always find a way to make stakeholders happy” (they can’t say no) “We built it anyway and it worked out” (no judgment about trade-offs) Can’t give an example (they’ve never had to make a hard call) Green flag answers: Specific example with reasoning Explains how they communicated the decision Owns the discomfort but stands by the call Can articulate what they said yes to instead Question 2: “Walk me through your typical sprint planning process.” What you’re testing: Do they have a repeatable process? Red flag answers: “It depends” (no structure) Vague platitudes about “agile” and “collaboration” Can’t describe the mechanics Process sounds like it takes 8 hours Green flag answers: Clear structure: backlog grooming, sizing, commitment, goals Specific time boxes Defined outcomes Sounds efficient Question 3: “You have three critical features, two months of runway, and a team of four developers. How do you decide what to build?” What you’re testing: Decision-making under constraints. Red flag answers: “I’d ask stakeholders to prioritise” (deflecting) “We’d build all three in parallel” (no focus) Technical answer that ignores business impact Can’t make a call without more information Green flag answers: Asks about business impact and risk Forces rank ordering Explains reasoning Makes a definitive call Acknowledges what’s being sacrificed Question 4: “Tell me about a project that failed. What was your role in that failure?” What you’re testing: Can they own mistakes? Red flag answers: “I haven’t had a project fail” (they’re lying or haven’t taken real risks) Blames the dev team Blames stakeholders External factors only Green flag answers: Specific example Takes ownership: “I should have…” or “I missed…” Explains what they learned Different approach next time Question 5: “How do you handle a situation where your tech lead says something will take 6 weeks and your CEO wants it in 2 weeks?” What you’re testing: Can they mediate between business and tech? Red flag answers: “I’d push the tech lead to find a way” (doesn’t respect technical constraints) “I’d tell the CEO it’s impossible” (doesn’t explore creative solutions) “I’d let them fight it out” (abdicating responsibility) Green flag answers: Asks both sides probing questions Explores scope reduction Finds the MVP within 2 weeks Manages CEO expectations on quality/scope trade-offs Makes a recommendation Reference Check Questions That Actually Matter Don’t just ask “Was [candidate] good?” Ask specific questions that reveal patterns: To their previous stakeholders: “Tell me about a time [candidate] told you no. How did that go?” “Did projects generally ship on time? If not, why?” “How did [candidate] handle competing priorities from different executives?” To their previous dev team: “How clear were priorities day-to-day?” “How often did direction change mid-sprint?” “Did [candidate] protect you from stakeholder chaos or amplify it?” Listen for patterns. One bad experience is an outlier. Three people describing the same dysfunction is a pattern. The “Good Enough” PO: Minimum Viable Product Owner You’re not finding the unicorn who’s technical, business-savvy, a great communicator, politically adept, and decisive. That person either doesn’t exist or is already a CEO somewhere. Here’s what you can’t compromise on – these must be innate or very deeply ingrained: Decisiveness – You can teach process. You can’t teach someone to make hard calls under pressure. If they waffle in normal conversation, they’ll waffle when it matters. Backbone – The ability to say no and absorb anger. This is temperamental. Either they have it or they don’t. Ownership mentality – Do they take responsibility or deflect blame? Watch how they talk about past failures. This reveals character. Here’s what can be learned: Process and tools – Backlog management, sprint planning, roadmapping. These are skills. They can be taught. Domain knowledge – They can learn your business. It takes time, but it’s learnable. Technical literacy – They can learn enough tech to be dangerous. Won’t make them a developer, but they can learn to understand constraints. The minimum viable PO: Decisive and has backbone (must be innate) Willing to learn your domain (teachable) Has run something end-to-end before (must have experience) Can communicate clearly in writing (mostly innate, partly teachable) Has basic project management instincts (teachable) You can build up from there. But you can’t fix a wishy-washy people-pleaser who’s never owned an outcome. Don’t try. When You Don’t Need a Dedicated Product owner Sometimes a dedicated PO is overkill. Sometimes it’s actively harmful. When the Founder Should Just Own It Pre-product/market fit startups (pre-seed, seed): You’re iterating too fast for handoffs The founder has the vision in their head You need tight loops between customer feedback and product decisions A PO becomes a bottleneck and a game of telephone Warning: The founder must actually do the work. If they say “I’m the PO” but don’t write stories, don’t prioritise, don’ [truncated] ======================================================================== # The Times — our new strategic client - Tech Consulting and Software Engineering URL: https://q.agency/blog/the-times-our-new-strategic-client/ Q welcomes The Times as a new VIP client, providing digital expertise to tackle modern technology challenges. The Times — our new strategic client | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The Times — our new strategic client The Times — our new strategic client October 29, 2018 — 1 min read We are honored to welcome “The Times” as our new VIP client! For over 200 years, “The Times” has been an integral part of the British cultural heritage and one of the most prominent national newspapers. With our experts on board and vast experience in solving tech problems, we will help them to successfully meet all contemporary technological challenges. Check our Case Study . Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 29, 2018 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 29, 2018 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # The UX Strategy - Tech Consulting and Software Engineering URL: https://q.agency/blog/the-ux-strategy/ Learn the five-step UX strategy process, from user research and prototyping to design, testing, and iteration. The UX Strategy | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > The UX Strategy The UX Strategy July 13, 2020 — 18 min read What is UX? User experience (UX) design is a process that creates intuitive and functional products for its users. It is focused on understanding and improving interaction that users achieve with specific tools, products, or services. The main goal of a UX designer is to create enjoyable and intuitive experiences for the users. UX follows an iterative process, and the final output is UI – User Interface. User Interface is not only screens, but also a physical object, process, or service. From a scientific standpoint, UX design: Observes what’s going on Questions why things are happening the way they are Experiments to test hypotheses Measures the results Decides whether you were right Why do we need UX strategy in our internal processes The UX strategy helps us identify the users’ needs and interests, but it also helps us focus on the business side and how to keep it profitable. The end-user is essential, as is the client and his business. This is the best statement that you can tell your client or a superior who doesn’t have an idea of what UX is and whether they should pay for it or not. For us at Q, there was a significant interest in learning more about UX strategies. We were sure it would better our design processes and help us design higher quality products. Let’s be real, the web is full of dierent approaches and strategies, and the best way to establish your own is through teamwork and practice. Every designer in our team has her or his way of designing, built upon their previous work experiences. That’s why we wanted to work on the process together as a team – to come up with a strategy that works for our clients and us, but follows a certain tested standard. Our focus points were: User research Creating prototypes based on research Testing of the prototypes Iterations. We also saw the importance of understanding the processes between various departments. So, developers and business analysts joined in. This was very helpful. Why the UX strategy should be mandatory for every project Each step of the strategy helps us to argue why we designed something the way we did. It does not come from our subjective opinion, but from detailed research and the conclusions we got from it. The most important lessons we all have to adopt and the UX helps us to understand them are: A) “YOU ARE NOT THE USER” and B) “Don’t make assumptions about user behavior.” You might use the product yourself, but that doesn’t mean that you represent all users. User research enables us to develop empathy for users and understanding of their struggles. You can’t guess background motives for users’ choices and how they will behave in certain situations. You need to observe your users to recognize their behavior, options, and preferences. If you focus on just these two lessons, you will already make better solutions. 5 steps of the UX process Krispin Stock (yes, that is his real name) was our UX spiritual leader, he guided us through all the crucial steps, and gave us a dierent view to what the UX really is. We already knew a lot, but he taught us how to tie loose ends. In this workshop, we went through 5 phases of the UX process. The 5 phases of UX process are: 1. Research & Discovery Identifying user needs through user interviews and competitive analysis. 2. Synthesizing Research & Design Strategy Analyzing the results of the research and looking for the patterns in acquired data to better understand your users’ needs, goals, and pain points. 3. Placement & Layout Design Creating wireframes — This is a well-known phase we all have experienced — useful for confirming your research results. 4. Execution Breaking down the design concept into more specific elements through which you can support user goals. 5. Usability Testing Collecting some new testing skills to evaluate your design and observe the utility & usability of the prototype. STEP 1 – Research & Discovery Start with collecting data. Every project starts with collecting all the data you can get to know more about the product or service you are working on. We all do it in various ways, but the most useful approach for us is: Competitive Analysis It helps us find inspiration in competitor products. It also helps us find the mistakes and shortcomings of our competitors that show us potential market opportunities. Pros & Cons is the simplest method. It represents a list of benefits competitors are oering to your potential customers. The Pros & Cons list helps you dierentiate your product. Task Analysis is a fancy word for identifying the user flow (steps) throughout the competitor’s product or service and establishing potential mistakes. It is basically learning from other’s mistakes. Featured Inventory represents a table visualization of all features competitors use. It’s handy for quick feature comparison. We found that the list of features is the most helpful one. When competitive analysis is done, the next phase is: User research User research can be conducted in various ways, but the most helpful and eicient one is “The interviews.” Honestly, interviews are tough. They are time-consuming, expensive, and probably the hardest to arrange, but they are sooo useful. You can also use polls, they are suitable for collecting data about users, but you can’t understand motives and reasons for particular behavior based on surveys only. So really the best, most thorough way are the interviews. For conducting interviews, you need to be prepared – preparation is the key to success. First of all, you need at least 5 interviewers , and they need to be as close as possible to your target audience. Set: The goal for the interview What do you want to learn What areas you want to explore But, you also need to be able to let the interviewer speak fluently and freely. The trick is to ask right, open-ended questions that don’t give users the ability to answer with just “Yes” or “No.” Right questions start with: Who? / What? / Where? / Why? / When? / How? In this way, you can dig deep into the user’s problems and needs. Few more tips & tricks Introduce yourself and make them feel comfortable. If possible, record the interview. Avoid asking users what they want, pay attention to body language, tone, and facial expressions. Write down things that you notice during the interview. Interview with the help of a colleague: One should do the interview, the other should take notes. After the interview, write down any insights that you gained. Notice if there is a pattern in data that you collected that points into some new design directions. Conclude the shortcomings in your knowledge that need to be solved with further research. STEP 2 – Synthesising Research & Design Strategy Synthesis of the Research is a somewhat subjective process in which you try to find a meaning to your data. You need to collect all the insights and observations and group them into meaningful and helpful patterns. The primary method used for Synthesis is Ainity Mapping. We do it in 3 simple steps: Write on post-it notes every single insight/observation from your interviews and research Paste post-it notes on a wall and group similar insights Refine groups and give them relevant names When you are happy with the ainity map and confident that this is the most sincere collection of quotes, observations, and insights from your research, you will get the result, which is a user persona. User persona A user persona is a UX design tool that impersonates problems that we are trying to solve with our design. It describes the type of person that we are designing for. It is based on real people that we have interviewed, but using imaginative details (sex, age, name…). It is a person’s model that helps the team be on the same page when discussing design and making decisions. Give it a name and a “place to live in the project.” Print it out and stick it on the whiteboard. It will be easier to incorporate him or her into your process. A well-done Persona includes a name, photo, quote, demographic data, problems/frustrations, goals/needs, and scenarios/behaviors. It was a bit funny and strange for us to create one persona that includes the insights of 5 real persons. The opinions can be contradictory, and the goals can clash, but the lesson we have learned here is to prioritize. It is crucial — because if you try to design everything at once, you will have to make too many compromises. In the end, you can make 2 or even 3 personas if you want, but it will make it harder later on. Now that the persona has been created, the next step is to think about the problem we are designing for and the solution that our design will propose. This process is called: Problem-solving & solution It’s done with the help of writing down the problem statements and hypotheses. You can help yourself with a problem statement format: Persona name needs a way to user’s needs, because insight. Eg. John needs a way to learn how to cook healthy because he is gaining weight. The trick to writing a good hypothesis is to follow the problem statement with the question format “How might we?” Eg. How might we help John to learn how to cook healthy so that he can lose weight? While writing the hypothesis, help yourself with answering the HMW questions, and using the Hypothesis format: We believe that by doing this/building this feature/creating this experience for these people/personas, we will achieve this outcome. We will know this to be true when we see this feedback/quantitative measure/qualitative insight. Eg. We believe that by creating an online cooking class for a healthy and balanced life, we will achieve Johns goal of losing weight. We will know this to be true when we see the quantitative measure of profile weight insights. Writing down all of these statements enables you to create a lot of ideas that address the problem. It allows you to research dierent approaches and not to restrict your research too early. It enables every member of the team to participate and own the solution. So it is crucial here to write down as many hypotheses as you want. It is a good brain workout that pressures you to deliver a lot of ideas on paper, without overthinking. Try it 😉 Now that you have your ideas and possible solutions written down on paper, you need to go further and put them inside real scenarios. The client or a project owner will understand your ideas more clearly if you communicate them visually. We reached for the more artsy colleagues and tried out our drawing skills with the help of Storyboards. Storyboards A Storyboard is a sketch that shows an overview of the interaction between a user and a product. It is a comic-style drawing representing a few scenarios based on your hypothesis and proposed solutions. It is a great intro and a helpful reminder for starting to realize and test your ideas with User flow. User flow User flow is a detailed depiction of a Storyboard, it shows the path that users will travel from the start of their interaction until they reach their goal. Where will the user click? To which page will it take him? User Flow keeps you focused on tasks and Interactions, it enables you to research dierent approaches and not to restrict your research too early. When you are satisfied with your user flow, or more realistically, when the flow doesn’t have flaws 😉 the next step will be writing down all the features. You will need to finalize your product. Working with developers and BAs on the feature prioritization list is essential. You will need to prioritize the list together and try to figure out which features are vital for your product to work, and which are just nice to have. They also need to be arranged to satisfy your client’s budget with high and low-cost presumptions. Do it with the help of a 2×2 Feature Matrix that will help you figure out the MVP and the next phases. STEP 3 – Placement & Layout Design After we have met our users, figured out their needs and problems, settled all technical details, we have our MVP scope, and a product that is dissected into a few parts… Now we will embark on a new level of our UX journey: Placement & Layout Design. Placement & Layout Design It starts with giving our project some “bones,” sketching out “Screen Flows,” which is nothing but a fancy word for Lo-Fi wireframes. Screen Flow Screen Flow is similar to User Flow, but here, each step represents through an image that shows what is going on in this screen. The trick here is to sketch with a thick flat pen that leaves us as little room as possible for details. You need to be quick and rough, and draw as many of the screens as possible. Use them to test your sketches as a paper prototype, using your colleagues, moms, and boyfriends. It’s a child’s play that will help you a lot. Paper prototypes and screen flows enable fast iterations – in contrast to code, they can be rapidly changed and iterated, they save money and allow you to test early. I know you like digital and medium to high fidelity prototypes. They give us a feeling of being quicker and having our wireframes set. But actually, people are more productive with paper prototypes. They move away from screens that rarely happen, and they don’t need to worry about font size or the line thickness or all the other things I know designers go into before they have all the screens set up. There will be time for high fidelity wireframes later on, and this method will make it easier to produce them. Try it! Information Architecture Information Architecture (IA) deals with the structural organization of information, content, and features. It enables the user to smoothly navigate through them. It is a skeleton of the app or a website. Firstly, we focus on the sitemap , which enables us to organize and structure a website. A Sitemap helps you recognize where content fits and what needs to be created additionally. We most often define them in workshops with clients, with the premise that we have already done the discovery phase. They are a great way of looking at the bigger picture , and they are an excellent cheat sheet for the developers. When the sitemap fits all the criteria, go more in-depth, and design a User journey that follows the sitemap—color code all the clicks and steps, and connect them with arrows. Strategize how you want the user to use the product (app, website, etc.) and lead him on with CTA buttons, suggested content, and try to avoid dead ends like leaving our website through external links. STEP 4 – Execution Wireframes!!! Finally! I know. There was a lot to go through to come to the part that was usually the first we start with, or the client wants us to begin with. Yeah, but that’s why you are reading this article, so I hope you are still with me. Wireframes are classified by the degree of fidelity, that is, the degree of accuracy and precision. That means there are LO-Fi and Hi-FI wireframes. LO-FI wireframes are usually hand-drawn. They contain lines and empty spaces to communicate content hierarchy. They typically show the image as a frame and text as doodled lines. HI-FI wireframes are usually drawn in software like Sketch, Figma, etc. They contain grayscale shading, dierent typography & styles to communicate content hierarchy. They include spaces reserved for images and text descriptions that will be used in-app or website Mockups. In this phase, we usually go with the Hi-FI wireframes, but it depends on the project and the designer working on it. Focus on the main steps of User Flow and pay attention to visual hierarchy and relations between elements (typography, buttons, and spaces). Wireframes naturally lead you to the design phase, and this is the phase that leaves it up to the designer to determine her or his workflow. It also depends on the nature of the project and the team working on it. At Q, we collaborate as much as we can with developers, BAs, etc. before presenting anything to the client. STEP 5 – Usability Testing Testing isn’t a joke. It requires a lot of attention to details and preparations for “no hard feelings dude” and “I don’t get it” sentences. It can be a heartbreaking experience because we tend to connect with our project decisions and ideas. But you need to know that testing will definitely make your product better and focus your attention on possible mistakes. Mistakes are healthy, but it is better to find them in the design phase than the development phase. It is more cost-eicient and leaves you more space for thinking things over one more time. Your client, your bosses, and your developer colleagues will appreciate it. First, you need to understand that the users’ feedback will depend on the fidelity of the prototype, on the presentation and on the tools you use. So be careful, and find the best solution for you. The best way to test your products is Usability Testing – a method that gives you a structured approach to observe and assess your design of the Website or an App. With usability testing, you will find out what the user sees and does on a Website or an App. How does he manage it, how does he perceive the content, and did he hit the goal you set up. It ensures that the design you make is intuitive, easy to use, and works for users. The best scenario would be if you can invite your interviewers, from the first phase, to test out your product. They are already introduced to the topic and its problems and have some emotional investment in it. It would be even better to find real or potential users that fit your target user description. But the key is to see if anyone other than you and your team members got the point, and for you to get the feedback from a set of new eyes. Whatever you decide to do, you need to be prepared. User interview tips help out a lot, but here are a few more tricks for a live Usability Testing: You don’t want to waste someone’s time, so you need to “test plan” to avoid possible mistakes — test the schedule, place, and equipment. You need to set the goal, prepare instructions & scenarios for every task. Your Usability Test should include 3 persons: the Test user, the interviewer, and the Notetaker. The interviewer should lead the test user through tasks, and he should encourage candidates to “think out loud.” Again it would be helpful if you can record the testing. After the testing, collect all the insights , comments, and suggestions and write them down on post-it notes. Divide them into “Went Well” and “Could be improved” columns, and use the ainity mapping strategy where you seek patterns in behavior and insights. At Q, we like to use Invision clickable prototypes, here and then we will use Maze or some new and fresh tool to remote test on a larger scale. Conclusion The main task of the UX designer is to: Understand the user Make conclusions Oer solutions to their needs Well-structured steps will make you fulfill that goal and make this journey more accessible and more productive. The conclusion that we at Q have come up with is that sometimes it is impossible to follow all the steps of this strategy in a real-life scenario. Sometimes the client won’t be able to pay all the necessary steps, or the estimate will need to be cut short. You know all of it, don’t you? But it’s not a perfect world we live in, so the goal is to do your best. Try to implement as much knowledge and strategy steps as possible to every project, and try to corroborate every decision with a well-researched conclusion. We have learned a few new tricks, we got to know each other on a deeper business level, and we ate a lot of pizza during it. So if you have some spare time and a willingness to learn, try to implement as many strategy steps as you can into your next project — I guarantee you will love it! I hope you enjoyed this article! It was a real struggle to keep it “short”, so if you are interested to read more about a particular step of the strategy, and learn more about how we use it in practice, please let us know at design@q.agency ! Josipa Prsa She designs visual concepts, by hand or using computer software, to communicate ideas that inspire, inform, or captivate consumers. She is always working hard and paying attention to the smallest details. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 13, 2020 — 18 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 13, 2020 — 18 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Trip to a Future Workplace in Q agency: Flutter Workshop - Tech Consulting and Software Engineering URL: https://q.agency/blog/trip-to-a-future-workplace-in-q-agency-flutter-workshop-in-q-agency/ Q agency hosted students for a virtual Flutter workshop, covering mobile development, Flutter technology, career advice, and opportunities in the tech industry. Trip to a Future Workplace in Q agency: Flutter Workshop | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Trip to a Future Workplace in Q agency: Flutter Workshop Trip to a Future Workplace in Q agency: Flutter Workshop April 29, 2021 — 4 min read Last week we had a great time talking to students during the event called Trip to a future workplace in Q agency . 🙂 A trip to a future workplace was an educational visit that gave students the opportunity to get to know the Q and develop new skills in a few hours. It was organized by eSTUDENT, which is the largest student association in Croatia. Every year they organize projects whose organization alone engages 200 members. Their goal? Providing additional experiences through project work and raising the quality of education . We knew right away that we wanted to jump into a project like this, so this year we held a virtual trip intended for students with technical backgrounds who want to learn something new and can imagine their future careers in Q agency (especially if they have an interest in our Mobile team and Flutter ). What is Flutter and why did we choose it? Flutter is Google’s Cross-platform. Google’s UI toolkit for building mobile, web, and desktop applications from a single codebase. It is free and open-source, which is probably one reason it gains popularity with clients and developers. Flutter is a very young and modern SDK based on the Dart language. We got together for a Zoom meeting last week and started our agenda to learn more about it. First, there was an introduction, and then, the real deal – tech talk. 🙂 Introduction to Q: HR department (Sara Madjer and myself) covered the introduction to Q and we talked a bit about who we are as a company , what we do, and what are our core values aka the words we live by. Of course, we also mentioned our current openings for Junior Developers in Q, so the students learned exactly what they needed to do for us to get their CVs and for them to gain our attention. 🙂 Next on the agenda, Adrian Keindl, our Head of Business Development , stepped up and talked about interesting projects we worked on from a Business perspective . In a fun way and with a lot of examples, students learned what it was like to collaborate on projects with prestigious companies such as The Times, BBC, Hilti, Vaillant, Facebook , and others. Finally, the star of our trip was our Mobile Team Lead Zlatko Matokanovic, who held an educational Flutter workshop for interested students . Flutter talk Lately, there is much talk around Flutter , new technology, and successfully breaking into the market. As a company with one of the larger teams using Flutter in Croatia, it was a logical choice to introduce students to the secrets of the craft. That is why Zlatko talked about the evolution of Flutter ; started with Basics of Mobile Development , continued with the dierences between Android & iOS , and in the main part, he talked about the reasons why we turned to Flutter , what are the challenges of its use and what are its advantages. Of course, all this talk raised dierent questions, and that is why we saved Q&A (best) for last. Q&A session The questions were, of course, related to Flutter , but we wanted to give students a look into other Q departments as well. That is why Ante ( Backend Team Lead ) and Dominik ( JavaScript developer ) joined Sara, Adrian, Zlatko, and me. Ante told us about his leadership experience in Q agency (and World of Warcraft), while Dominik told us what it was like to work on exciting projects in our JavaScript department. You can probably already guess the direction in which the Q&A session went. Students asked: “How to gain an advantage when looking for a job? What is the best way to learn and gain skills? What do Junior Developers do in Q, and what is expected of them? (To bring us coee, of course – NOT). What are the most interesting projects our developers have worked on?” If you think about it, underlying these questions runs the thought about the steps they needed to take to work in similar positions as our developers in the future. We hope that through a pleasant and relaxed trip to Q, we have managed to share valuable tips & tricks that will help them achieve their professional goals in the future (maybe even in Q :)). Some of us at Q are former members of eSTUDENT, which helped us find our place in the business world . We hope our trip oered some insight and could do the same for the students who visited us last week. We look forward to repeating such an event! Martina Krizan Martina is Talent Acquisition Specialist at Q agency. and a psychologist focused on matching great candidates with awesome opportunities in Q. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 29, 2021 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 29, 2021 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # How We Won Trust and Partnership in a Dual-Vendor Setup - Tech Consulting and Software Engineering URL: https://q.agency/blog/trust-and-partnership-in-a-dual-vendor-setup/ Learn how we we won trust and strengthened our partnership with our client after finding ourselves in a dual-vendor setup. How We Won Trust and Partnership in a Dual-Vendor Setup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > How We Won Trust and Partnership in a Dual-Vendor Setup How We Won Trust and Partnership in a Dual-Vendor Setup October 26, 2025 — 9 min read Recently, we successfully finished the Due Diligence process with one of our clients and started the next, more challenging phase. Phase 2 was focused on improving their code and processes which was really exciting for us. We knew we could bring value and achieve improvements in all areas – from Backend and Frontend, to QA and PM. However, there was a twist. We found ourselves in a dual-vendor setup. The client already had an existing third-party team, for a couple of years. That team was familiar with client’s legacy code and system. We were of course aware that their not so good code practices and lack of process led to this not so good situation. Suddenly, we were stepping into their territory. For a client, this was a strategic moment: within three and a half months, they had to decide whether to keep both teams, to expand ours and move fully in our direction, or to stick with the existing vendor. For us, this was more than just a regular project. Our patience, adaptability and staying professional were in focus and closely monitored by both internal and external stakeholders. The Challenge of Coexistence Let’s be honest. When your team is in a dual-vendor setup , you share the same space, dynamics, and it can get complicated. It’s not just about code. It’s about ownership, trust, and collaboration, or the lack of it. The existing vendor had the upper hand in one sense: they knew the product’s history inside out. But knowledge can sometimes turn into a gatekeeping tool. When our team started to work on the improvements, we started to notice the resilience. For instance, the team refused to have daily meetings with us. We all know daily meetings are a perfect place to share status, resolve blockers and get the update quickly. However, with this vendor, that was not the case. When we started working on improvements, maybe it was clear they felt threatened by our presence. Whenever we reached out with questions, responses were delayed. When we submitted code for review, it would sit there and wait for days. Comments often felt more like hurdles than constructive feedback. The underlying issue was clear: someone else was “touching” their code, and it triggered defensiveness. Considering all those factors it is easy to assume some of the situations led to frustration . Sprint after sprint, the progress was slow, especially for the developers, and not because of the complexity of code and task, but because of other team’s dynamics. Or lack of it. It took days to move code which was developed from column “In a review” to “Done” column. Still, being professionals, as we are, we had to keep calm. Getting emotional would only make things worse. So we’ve tried to take the opposite approach. Pause for a second. Take a deep breath. And continue to lean on the processes we established and transparent communication. Finding the Right Approach: Patience Meets Professionalism One of the first things we did was setting more clear expectations. We began raising review requests publicly in the shared Slack channel, tagging not only the other team but also the client’s Product Owner (PO). This wasn’t about escalation for the sake of drama, it was about accountability. Everyone could now see what was pending, and the silent delays became visible. The breakthrough came when we all agreed that code reviews had to be completed within 48 hours. That single agreement transformed our velocity. The same story repeated itself in testing. Our QA engineers would carefully test new features, only to discover later that the other team had additional documentation, information that wasn’t initially shared with us. Their QA process acted like a second checkpoint, but instead of being collaborative, it often felt like a trap. Our work was being evaluated against criteria we hadn’t even been given. Here again, transparency became our strategy. We began pushing for shared documentation and open conversations about testing requirements. It wasn’t easy, and sometimes it felt like Sisyphus’ job , but slowly, the situation started to improve. The Language Barrier Communication is always a crucial element of any collaboration, and in this case there was an additional layer of complexity in the form of a language barrier. The other team didn’t have strong English skills, which made collaboration slower and occasionally frustrating. During the first few months, the client’s PO, who speaks both English and the vendor’s native language helped us overcome this challenge. She acted as glue that kept things running smoothly. But then came the day she went on prolonged absence. Suddenly, that bridge disappeared. So we had to find a way to continue working for 2 months without our translator. For sure we wanted to avoid the “Lost in translation” situation . So we focused on the tools that we had: Written communication and Slack channel. We tried to write clear direct messages in Slack, and we always tagged another PO who stepped in. In that way we were transparent. Also, we’ve decided internally which tasks are lower priority, and can wait for the main PO to return. So some discussions that didn’t have a direct impact on the project’s progress were put on hold for a while, while the more critical ones were handled promptly together with the replacement PO, tech lead and other key stakeholders. Walking a Fine Line: Implementing Improvements Without Disruption Another balancing act was deciding what to improve and when. Our primary focus was to implement changes identified during due diligence. Any change that we planned must be done in a way we don’t disrupt other vendor’s ongoing activities. In this dual vendor setup, stepping on each other’s toes seems like a huge risk at the moment. It’s like you have to renovate someone’s kitchen while they still live there, and they expect they can prepare meals without any disruption. So, we became strategic. We carefully selected which areas to tackle, focusing on high-impact improvements that could be delivered in isolation without blocking anyone else. It required restraint and discipline. Sometimes we had to postpone the changes that could bring long-term value, simply because the short-term risks of disrupting the other team was too high. This approach wasn’t easy or our first choice, to be honest. It required working on tasks through workarounds or by using non standard methods. But in the end, it showed the client that we managed to adapt to the improvements while our hands were slightly tightened. Keeping Morale in a High Intensity Atmosphere Inside our team, the emotional toll was real. Daily meetings and retrospectives become our place to vent out. Sometimes we were facing frustration, however we didn’t want the negativity to win. We encouraged open conversations in retrospectives . We validated the team’s frustrations but channeled them into constructive problem-solving. We know our results speak for themselves. Even minor changes that we did, showed a huge improvement in the client’s application. We knew quality was on our side. Plus, we knew this limbo is not forever. It was only for a few months. When things were not going our way, we kept reminding ourselves. We can not control the other team, but we must strive to be as good as we can. We reminded ourselves that professionalism wasn’t about never feeling frustrated. It is how you react to the frustration. The Turning Point Persistence pays off. Slowly, the client began noticing the difference in our approach. They saw a team that stayed positive under pressure, that solved problems instead of escalating them unnecessarily and that delivered improvements despite the odds. What truly made a difference, though, was our focus on the quality of our deliverables and on the bigger picture: understanding the reasons behind the other team’s resistance. Instead of pushing harder, we listened, adapted and kept our eyes on the shared goal. As a result, the applications we improved became faster and more reliable. The new blog we designed brought a fresh and modern look to the site. It wasn’t about being perfect. It was about being reliable. Week after week, we shipped quality code. We improved processes. We communicated openly. And day by day we were earning the client’s trust. When the decision point arrived, the outcome was clear. The client chose to continue with us . Not just because of the technical value we provided, but because of the professionalism, resilience and collaboration we demonstrated in a complex setup . Lessons Learned: Thriving in a Dual-Vendor Environment Looking back, this phase of the project where we worked in a dual vendor setup, was more than delivering software It taught us how being human and kind always pays off. It tested our patience, while working with different culture and not so cooperative teams. Here are some of the key takeaways: Transparency beats assumptions. By making reviews and testing processes visible, we reduced room for silent delays and unspoken resistance. Use Slack or any other official communication channel. Process is your friend. Clear rules like a 48-hour review SLA created accountability and removed ambiguity. Communication and documentation are everything. Especially when you don’t speak the same language, literally. Clarity and documentation are needed more than ever. Humility goes a long way. Choosing not to push improvements that could disrupt others showed respect for the bigger picture. Professionalism wins trust. Staying calm, constructive and reliable even in the time of frustration was the key to success. Closing Thoughts In today’s world, where it’s hard to get and keep clients, it’s even harder to work if you have a dual-vendor setup . On a daily basis, you need to deliver quality code, but also deal with politics, trust issues and human ego. Working on this project was one big lesson learned about professionalism and patience. Instead of arguing we focused on quality, communication and collaboration and proved that’s our strongest card to play with in this game. In the end, we turned out to be the winners and we managed to convert a challenge into an opportunity. And in the end, it wasn’t just about delivering improvements. It was about delivering trust. Along the way, the challenges brought us closer as a team and inspired us to find new, creative ways to move forward. Those moments of collaboration and growth became just as valuable as the final results. All together was a great foundation for a lasting partnership. That is more than any line of code, the real measure of success. Vinka Đurđević Vinka is a senior project manager with more than 12 years of experience in IT. She is a certified Scrum Master, PMP and Agile Practitioner with a background in software development and Salesforce. She enjoys working on dynamic projects and loves collaborating with teams to get things done. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 26, 2025 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 26, 2025 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Types of QA Testing in Software Development - Tech Consulting and Software Engineering URL: https://q.agency/blog/types-of-qa-testing-in-software-development/ In this article, find out all about the types of QA testing that we use during the software development process. Types of QA Testing in Software Development | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Types of QA Testing in Software Development Types of QA Testing in Software Development March 14, 2025 — 9 min read Types of QA testing , a.k.a. QA testing methods. What’s it all about and how does it work? For a software you’ve worked on to be functional and reliable, it needs to go through quality assurance testing. In the world of software development, quality assurance (QA) is more than essential as it assures us the app or service doesn’t contain any errors or faults. So when QA steps in, there are various testing methods that help us test our product deliver it safely to our client. From manual and automated testing as well as functional and non-functional testing , there’s a wide array of methods used nowadays. So in this article, we’ll go through these types of QA testing mentioned above that we use for our projects during the software development process. Manual Testing We’ll start with manual testing. This method involves putting the tester into a role of a user and checking if all features work properly. When using this method, there’s no using any of the automation tools (that we’ll talk about later on). Manual testing is especially useful in early development stages for exploration scenarios and the assessment of UI/UX elements. However, there is a downside to this method — it is susceptible to human error. Since manual testing involves people doing the work before the testing goes into the automated phase, it requires more time and can overlook errors that software-driven testing wouldn’t let go unnoticed. So what are the benefits of this methods? First and foremost, its adaptability as well as real-life human evaluation of the user experience. Also, it’s extremely useful when it comes to testing new functionalities. And finally, this method makes it easier for testers to find faults that are not covered in predefined testing scenarios. Before the actual production phase, manual testing is used in the User Acceptance Testing (UAT) phase. Automated Testing Compared to manual testing, automated testing uses tools and scripts to complete tests — without human interference involved in the process. Automated testing is your go-to when you need to test more complex software products or services that contain a large number of features or functionalities that get updated often. Something that would take a lot more time if only manual testing was involved, with automated testing, much less time is required. So what are the pros to use this testing method? It is extremely reliable, faster and more efficient than manual testing, and it helps cut down on the expenses in the long run, given that it is not susceptible to human error as the manual testing method. Of course, you need specialised tools for this type of QA testing. Some of the most common tools used for automated testing are Postman, Selenium, and JUnit. Functional Testing Each software has its specs, and this is where functional testing comes into play. In what way exactly? Before the entire system gets pushed further into production, it does it so by checking the entire system’s functionalities. Functional testing has the purpose of making sure that all features are working properly before the software reaches the end user. Functional tests are also a system documentation of sorts. Because test cases precisely clarify how software should behave in different scenarios. Does your software check all the boxes when it comes to user requirements? Functional testing method checks this too. Why is this testing method indispensable? Because it makes sure the key functionalities work as they should and it helps us get better insights into the end user scenarios. Functional testing can be both manual and automated, but as we mentioned above, automated testing provides better efficiency and is simply a faster method overall. Here are three types of QA testing that fall into the functional testing category. Unit Testing Unit tests help developers identify and fix bugs in their code more easily before they become more serious issues and the software itself becomes more complex. Because, as logic itself dictates, more complex software and later stages of software development equals bugs are harder to fix. Often much, much harder. A big plus of unit testing is that it also encourages better code design — because code that is tested at the unit level ends up being higher quality, cleaner and more modular. Examples of unit testing tools are JUnit, Jest, and pytest. Integration Testing Integration testing comes after unit testing, and it checks the cooperation between the modules or components of the system that’s being tested. This type of testing can reveal that certain modules, although they work without errors during unit testing, when they get integrated, problems occur. This testing method therefore ensures that all elements of the software eventually integrate as they should. It can cover three different levels of integration, and these three are: component integration , system integration , and external systems integration . The latter is important for verifying the integration of external APIs. Often, the tools for integration testing are similar to the tools for unit testing, but when it comes to integration testing, it takes place in an environment that is as similar as possible to the production phase. Tools that can be used for this method are Postman, JUnit , TestNG, and Selenium. Regression Testing If a particular application receives code changes, it should be retested after these changes to check if the existing functionalities are still working. Why? Because with each new change, there is a chance that it might lead to the occurrence of new errors in the system. So, the purpose of regression testing is to ensure the stability of the system after it being updated in terms of code, features, etc. As a rule, regression testing is automated, but if the team has a plan to do targeted testing, it can also be done manually. The importance of this type of testing is that it focuses on system stability. It’s integrated into CI/CD processes, so regression bugs can be ‘caught’ immediately during development — and it aims to reduce the risk of unexpected errors along the way. Non-Functional Testing In contrast to functional testing that checks whether our software does what it’s supposed to, non-functional testing methods try to determine how the system works in the context of performance, security, usability and reliability. And that’s why we need to perform the following tests: performance testing : how does your software perform and how fast is it? security testing : are there any security issues in your software? Several more testing methods fall into the non-functional testing category. Usability testing has the goal to see how usable or intuitive is your software. Reliability/stability testing tries to find the answer to how your product works during longer times of use and if downtimes or outages happen. Lastly, there’s scalability testing with the goal to see if work volume increase is possible without losing performance score. These testing methods require tools that assist in testing, such as JMeter and LoadRunner for performance testing, and OWASP ZAP and Burp Suite for security testing. Below, we’ll cover two of the most common non-functional testing methods, crucial for your software’s success in terms of user experience and profitability — performance and security testing. Performance Testing This method already in its name explains what its objective is. To test the performance of a software — based on speed, scalability, response, and stability. The key with this method is that the tested software is under certain type of load, such as number of users, high data amount, etc. Nowadays, every application or service needs to be as fast and efficient as possible because the user can easily switch to another product that has better performance. And the user does not even need a performance test to understand which application suits them better in that context. There are several types of performance testing, and the most common are: load testing : checks how your software performs under expected load stress testing : this test increases the load on the system until the breaking point is reached. endurance testing : checks the stability of the system over a longer period of time under a certain load spike testing : this testing method tries to see your system’s reaction to a sudden increase in load; in other words — spike As for the tools, special tools are used for the performance testing method. One of them is Apache JMeter which can create different types of workloads; then there are also other tools like LoadRunner, Neoload and Gatling and k6. These tools allow writing test scenarios in programming languages ​​and integration into the CI/CD pipeline. Security Testing The security testing method focuses on protecting an app or service — checking its vulnerability or susceptibility to attacks and unauthorised access. The main purpose of this type of QA testing is to identify weaknesses in the system — before someone else does. Cyber ​​threats are a harsh reality in today’s world, and that is why security testing is an indispensable part of software testing. There are several subtypes of security testing: vulnerability testing involves automated scanning of the system to detect security vulnerabilities penetration testing (pen-test) is a simulation of an actual attack security audit checks the system against a list of security checks and standards The tools used in this testing method include OWASP ZAP and Burp Suite, Nessus, Qualys, among others. Conclusion Each of the above QA testing methods has its own objective, its ‘why’ and ‘how’. While manual testing has the advantage of human factor and real-person evaluation, this can also be a disadvantage. To reduce the chance of human error, automated testing steps into the game. In terms of functionality, functional testing ensures the software functionalities are working properly, whereas non-functional testing checks how your system works regarding performance, security, usability and reliability. Speaking of functional testing, as the lowest level of QA testing, unit testing helps fix errors in the code in the early stages of development, meanwhile integration testing evaluates if all the modules or components of your system work properly together. Has your software had any changes in code? This is what regression testing is for, to decrease the chance of new errors in the system. When it comes to non-functional methods, this is where performance testing proves to be essential as it checks your software is ‘all good’ in terms of speed, scalability, response, and stability. On the other hand, security testing helps ensure your product is secure and non-susceptible to any kind of threat or external attacks. We cover all these methods in our portfolio. Feel free to contact us , and see how we can make your software reliable, prone to different types of threats, and functional for your end users. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 14, 2025 — 9 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 14, 2025 — 9 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Who Would’ve Thought? Unexpected Facts of 10 Years in IT - Tech Consulting and Software Engineering URL: https://q.agency/blog/unexpected-facts-of-10-years-in-it/ From getting lost in translation to embracing the quiet power of maturity, here is what the last 10 years in IT has taught us so far. Who Would’ve Thought? Unexpected Facts of 10 Years in IT | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Who Would’ve Thought? Unexpected Facts of 10 Years in IT Who Would’ve Thought? Unexpected Facts of 10 Years in IT May 7, 2025 — 6 min read From getting lost in translation to embracing the quiet power of maturity, here is what 10 years in IT have taught me so far. To put the time into perspective, I started my IT journey when WebEx and Skype for Business were heavily used in everyday life, and responsive design was a niche due to smartphone usage exploding shortly. The expansion of mobile usage is best seen in numbers — the graph below shows average daily time spent online between 2011 and 2019. At the same time, migrating from on-premises data centres to cloud environments was a hot topic on many companies’ tables and departments worldwide, leading to massive adoption in the coming years. Virtana survey report shows that over 80% of companies nowadays use a multi-cloud approach. Huh, and that’s just the tip of the iceberg for the 2010s. [Daily time spent online per capita worldwide (2011-2019), Source: Statista ] Lost in translation Looking back, the business analyst role flew under the radar for a long time. It started getting attention when the International Institute of Business Analysis (IIBA) was founded in 2003 , and companies worldwide were integrating those roles in daily operations. Still, it took years for business analysts to function as originally defined. For me, right at the beginning, juggling different perspectives in projects was overwhelming, and I wasn’t always sure what the right question was. The main challenge was understanding complex problems and dependencies while still trying to connect the dots on the development basics. Also, navigating human interactions played a significant role in the whole journey. It took me a while to realise that keeping tasks in motion is crucial. I used to think working longer on a task would solve it, but that wasn’t always the case. The real key is transparency — seeking help and addressing blockers early instead of struggling in isolation. Along the way, it became clear that daily work in the IT field varies: keeping up to date with technology trends understanding domain logic participating in ceremonies determining your obligations and responsibility identifying the bottleneck of the current state collaboration with team members and all relevant parties. This brings us to an important takeaway — school teaches you discipline, dedication, logical thinking, but real, hands-on experience puts those principles to the test . It shows you where you actually stand and what you still need to learn. Basics remain, maturity changes When it comes to my hands-on experience, I had the opportunity to work internationally, with different project setup teams and expectations, but they all had two things in common. People and machines. Balancing human relationships, scalable solutions, and staying up to date with technical trends and obstacles is the most challenging part of the job. This one is also the one where you move forward by gaining experience. Looking back on the past, I have a few projects close to my heart so far, shaped by different circumstances. The question is, what made them special? It’s either lessons learned from people engaged or technology applied. What I learned the hard way was that sharing team pain is not a single person’s responsibility , and everyone involved should be aware of it. It just depends on the struggles we face and the point of view we come from. To make it more tangible, here are some examples: the client has unreasonable requests due to regulatory limitations development delays can be caused by an update of the relevant component management pushes for a tight deadline to meet performance targets departments arguing on the same matter due to different priorities. The list can go on and on, but at its core, a vital truth remains — cultures, languages, and technology stack change over projects. Still, the basics of development remain the same , combined with the maturity of people and the product involved. The strategic life cycle of a product is well described in various academic sources. For instance, Harvard Business Review covers stages from incubation, leading to growth, maturity and the final chapter of product decline. When you look at it from a higher perspective, a similar analogy goes for people, doesn’t it? [Product Lifecycle – Source: Harvard Business Review ] Digest and test values Harsh reality is that no one is perfect, and it never will be, whether people or machines. A gentle reminder for all of us that growth isn’t always uphill — sometimes it stagnates or goes downhill. It’s all part of the journey. After a few downhills on my own and looking where I am today, one thing stands out — spark doesn’t come from one voice, it’s shaped by openness, creativity, and equal effort from everyone involved. Just as important, and often ignored, is the ability to truly listen and understand different angles . Yet, that’s an often overlooked piece of collaboration. We are witnessing more than ever how global trends are changing fast . What matters today might not be relevant in 6 months. You can adapt as fast as you can, but what matters more is knowledge, lessons and experience along the way. By those, you truly train your values in daily work, often influencing personal life. With time, knowledge grows, and values might or might not change. And that brings me to a lifelong truth — I’m still standing, still learning. It figures — patience is a teacher “And isn’t it ironic? Don’t you think so?” In a nutshell, it’s the same advice someone out there 10-15 years ago tried to tell me, however, I couldn’t proceed. It takes time and patience . You’ll shape your way of working and expectations by learning the hard way — slowly. Still, after years, it’s normal to find yourself in a failing situation, with unclear next steps or a solution, but that’s the essence of it. Looking closely at tech trends, machine learning has been driving some serious business for years now. On top of it, the disruptive field of generative AI gives clear signs where individuals in the IT field should put time and effort in the upcoming years. Surely, spirit itself will guide us, combined with clarity and critical thinking , so desperately needed in modern society. So who knows what the next 10 years will bring to each of us? Here’s to an uncertain decade ahead — let’s do it! 🙂 Maja Kostic Maja is a certified product ownership analyst (IIBA-CPOA) with multi-year experience in various industries, on both client and vendor side. Constant problem solving is a persistent incentive for her motivation, which she combines with a willingness to learn, collaborate and share knowledge. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 7, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 7, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # University of Michigan visit - Tech Consulting and Software Engineering URL: https://q.agency/blog/university-of-michigan-visit/ Q agency hosted University of Michigan students in its Zagreb office, offering insights into workplace practices, projects, and hands-on experience. University of Michigan visit | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > University of Michigan visit University of Michigan visit May 22, 2019 — 1 min read University of Michigan is amongst the greatest academic institutions in the world and we were glad to host their students in our Zagreb oice. We believe that bringing young people into workplaces increases their understanding of dierent workplace settings and jobs. It can also help students connect their classroom knowledge with hands-on experience. Visit also included a tour of the oice, a presentation, and a chance to get a full overview of the practices and work cycles that our employees interchangeably use in all of our projects. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 22, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 22, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # University of Redlands Visit - Tech Consulting and Software Engineering URL: https://q.agency/blog/university-of-redlands-visit/ University of Redlands students visited Q to learn about our business, company culture, and how different roles work together. University of Redlands Visit | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > University of Redlands Visit University of Redlands Visit May 20, 2019 — 1 min read Students from the University of Redlands visited us last week. At each visit, students have extensive interactions with company representatives. They gained insights into how our business works, our unique culture, and how dierent roles and functions work together within our company. Students are given the opportunity to ask questions ranging from how Q reacts to particular challenges in the market to what it’s like to work here on a day-to-day basis. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 20, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 20, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # US Companies in Europe: Why Transatlantic Partnerships Beat Going It Alone - Tech Consulting and Software Engineering URL: https://q.agency/blog/us-companies-in-europe-transatlantic-partnership/ US companies are expanding to Europe — discover why transatlantic partnerships outperform solo ventures and drive lasting growth. US Companies in Europe: Why Transatlantic Partnerships Beat Going It Alone | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > US Companies in Europe: Why Transatlantic Partnerships Beat Going It Alone US Companies in Europe: Why Transatlantic Partnerships Beat Going It Alone September 23, 2025 — 4 min read Let’s be honest. When talking about US companies in Europe, you’ve heard different stories. Expanding your business into another continent sounds exciting – new markets, fresh revenue, top-tier talent. But once the real work begins, it gets… complicated. Fast. Compliance frameworks vary from country to country. Legacy systems start showing their age. Your team’s already juggling 17 priorities, and now you’re being asked to roll out in three new markets before next quarter. That’s when a good partner becomes a game-changer . At Q, we help US enterprises move fast and scale smart, not by just handing over dev work, but by becoming part of your team. When systems are complex, deadlines are real, and there’s zero room for fluff, that’s when we show up best. Europe’s Not a “Nice to Have” Anymore What used to be a multi-year vision is now a strategic urgency. U.S. firms are no longer testing the waters, they’re building in Europe. According to the U .S. Chamber of Commerce , in 2021 alone, U.S. affiliate sales in Europe reached $3.1 trillion, accounting for nearly half of global U.S. affiliate activity. Yet that presence doesn’t guarantee smooth sailing. Expanding westward still brings serious challenges: Navigating fragmented regulations like GDPR , PSD2 , and MDR Upgrading systems that weren’t made for multi-market , multilingual scale Dealing with internal teams stretched too thin Pressure from leadership to move fast — with little room for error The result? Many internal teams hit capacity before they even hit their goals. That’s exactly when a partner who understands enterprise scale — not just code delivery — becomes indispensable. Why Europe (and Why Now) Some people still think of Europe as an outsourcing destination. They’re missing the point. This region has become a product and engineering powerhouse , especially for companies that care about both speed and sustainability. You’re not just getting access to talent. You’re getting teams who understand compliance, customer nuance, and product-market fit across diverse cultures. And this is why US companies in Europe can be at peace and expect expertise and highly-skilled pool of talent that they will be able to work with. At Q, our offices in London and Zagreb give us access to a brilliant pool of engineers, designers, and product folks, all of whom work with global mindset and local excellence. Our US Partnerships in Action One of our most exciting partnerships? Spartan Race – the global fitness brand founded by Joe De Sena. This isn’t just an average gym story. Spartan is a movement. Over 10 million athletes . 45+ countries . And a mission to redefine human endurance. We’ve helped Spartan build out a digital ecosystem that could actually keep up with their growth, from registration systems to e-commerce and event management platforms, all tailored for a global audience. “The Q team are technical gladiators – smart, relentless, and precise. They move fast, think ten steps ahead, and they care as much about the mission as we do.” – Joe De Sena, CEO & Founder of Spartan We’re proud of that. But more than that, it proves what we’re here to do: partner with ambitious teams and build infrastructure for the long game. What It’s Like to Work with Us (Spoiler: It’s Not Like Outsourcing) This might sound familiar: you hire a dev shop. They’re responsive for the first two weeks. Then… tickets. Delays. Surprises. Eventually, you’re managing them more than your own product. We don’t do that. We show up like an extension of your team, same urgency, same ownership. You’ll be working with senior-level engineers , product thinkers, and strategists who know enterprise environments and aren’t afraid of legacy systems. Here’s what we bring to the table: 1. Embedded teams that feel in-house. We integrate into your workflows, not the other way around. 2. Real-time collaboration, US-friendly hours. We’re in Europe, but we work like we’re in your building. 3. Processes that move with you, not against you. Agile, lean, and light on the red tape. 4. Transparency, start to finish. No “surprise” invoices. No unclear metrics. Just visibility. It’s not about checking boxes. It’s about building stuff that works – together. Going Global? We’ve Got You. You’re not reading this because you need help with basic websites. You’re here because the thing you’re building is big, important, and complicated. And it needs to work. So let’s stop pretending this is about “outsourcing”, and start talking about a real partnership. Q is ready to help you scale, adapt, and deliver globally. Let’s talk. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 23, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 23, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # US University leaders visiting Q - Tech Consulting and Software Engineering URL: https://q.agency/blog/us-university-leaders-visiting-q-1/ Q welcomed deans and MBA leaders from 20 leading US universities to explore our business, technology, and opportunities for education and collaboration. US University leaders visiting Q | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > US University leaders visiting Q US University leaders visiting Q December 8, 2019 — 3 min read This year we have already been visited by MBA students from US universities, and the US Ambassador W. Robert Kohorst. Now we were honored to host a big group of deans and MBA program leaders from twenty prestigious US universities who expressed their desire to visit Q to hear more about the fastest growing software agency in Europe and to explore potentials for education and business development. We familiarised them with our company, business models, and processes. Of course, we couldn’t skip the projects that we did for some of the world’s most prestigious names such as The Times, BBC, Hilti, Facebook, Coca-Cola, Volkswagen, Audi, HomeExchange, Pfizer, Walmart , but also our new product — ‘ Jenz ’ app, which combines the best of social media to the everyday tools we use in business, into one fun story. After the lecture, brainstorming workshops were organized, where along with deans and professors we considered how to expand Q’s business in America, and how to place the new Jenz app on the US market. In the end, the US representatives were pleased to present possible solutions and suggestions. We are proud to be contacted and recognized by prestigious educational institutions. We have become the reference IT and business point in Europe, where American students, professors, and even deans come to learn from us. They are interested in our global success, especially the way we run unique business processes that we have developed on our own. The workshop itself was very intense, with dierent ideas and interests for future business cooperation. We are expecting to see American guests again since they’ve already announced another visit in the upcoming year, together with the students from the Silicon Valley. – said CEO Filip Ljubic., The reactions of the deans and MBA executives from Yale, Georgia, Houston, Texas, San Antonio, Utah, Oregon, Wisconsin , and others have been great! We are very impressed with Q! The whole team, actually. The whole visit, the development of the strategy, the involvement of all the participants, everything was really great. I think we will definitely come back to your headquarters! said the organizer of the visit, Wallis Milam., The visit is organized as part of the WorldStrides ISA Custom Program , the largest American educational travel organization that sends more than 400,000 students each year for educational trips to more than 100 countries in the world. In the United States, we operate through a New York oice, and so far we had successfully completed projects for leading US companies such as Coca-Cola, Facebook, Walmart, or United States Postal Services. In addition, last year, we were recognized by the US Brand Excellence Award, receiving the REBRAND 100® Global Awards, together with US companies HP and Cadillac, demonstrating its global success. Ana Cupic Before joining Q, she graduated from Medicine, so next to supervising all internal and external communication efforts, she comes in handy when you need medical advice or someone to explain your lab results! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 8, 2019 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 8, 2019 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Use Symfony Components to Build WordPress Plugin Maker for CLI - Part 1 - Tech Consulting and Software Engineering URL: https://q.agency/blog/use-symfony-components-to-build-wordpress-plugin-maker-for-cli-part-1/ Learn how to build a WordPress plugin maker CLI using Symfony Console, Finder, and Filesystem components. Use Symfony Components to Build WordPress Plugin Maker for CLI - Part 1 | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Use Symfony Components to Build WordPress Plugin Maker for CLI – Part 1 Use Symfony Components to Build WordPress Plugin Maker for CLI – Part 1 January 25, 2022 — 1 min read You can create your console command-line commands using the Symfony Console component. I needed one for my WordPress plugin skeleton. It is explained why here . In summary, I needed a WordPress plugin maker for my team. Your task is to do the same. A new plugin needs to be created from the files of the WordPress plugin skeleton. Download files of the skeleton here . Let’s build a new console and have fun with finding and creating new files using CLI. Create console with Symfony Console component Symfony components have such great documentation. Check the one for the Console component here . Now open your CLI and make a new folder for this project. Go inside that folder and run: $ composer require symfony/console Create an app directory in the root of the project and edit composer.json file to add PSR-4 autoloading: "autoload": {     "psr-4": {         "App\": "app/"     } } Create file named console inside app/bin folder and add this code inside: #!/usr/bin/env php run(); You have your console ready! Find files with Symfony Finder component Create logic for finding and creating new files with Finder and Filesystem Symfony components. Your task is to copy files from wp-plugin-skeleton, Rename those files, class names and constants to make a new plugin that is ready to use inside the WordPress project without conflicts with other plugins that are built from the same skeleton. Download files here and put the wp-plugin-skeleton folder in the root folder of your project. Create a service class inside the app/Service folder named WPPluginMaker with namespace AppService . This class will hold the logic for creating a new WordPress plugin from the skeleton files. Briefly check Symfony documentation for Finder component here . $ composer require symfony/finder Now you can use Finder in your service. Add dependency to SymfonyComponentFinderFinder in the constructor: finder = new Finder();     } Create a public function createNewPluginFromWpPluginSkeleton(){} in which we are going to use Finder to find all wp-plugin-skeleton files that we need to copy and manipulate later. We don’t wish to copy the vendor folder (if it is installed for some reason). To make sure you are not copying vendor folder add: $this->finder->notPath('vendor'); Define location of the files you are searching: $this->finder->files()->in(__DIR__.'/../../wp-plugin-skeleton'); Loop through the results. Use yield to return values so that we can iterate results later using command-line command: if ($this->finder->hasResults()) {     foreach ($this->finder as $file) {         yield $file->getRelativePathname();     } } Set the return type to Generator for createNewPluginFromWpPluginSkeleton method: public function createNewPluginFromWpSkeletonPlugin(): Generator { ... Create command-line command To build a command, create a class that will extend SymfonyComponentConsoleCommandCommand. Create an app/Command folder and a class named WpPluginMakerCommand with namespace AppCommand inside. You can learn more about creating commands here . wpPluginMaker = new WPPluginMaker();         parent::__construct();     } } Output results Let’s see if the Finder found the files correctly. Add the execute method to the command class. Execute method has access to the output stream to write messages to the console: protected function execute(InputInterface $input, OutputInterface $output): int { } Loop through the results of WPPluginMaker service and output file name for each file: $fileNames = $this->wpPluginMaker->createNewPluginFromWpPluginSkeleton(); foreach ( $fileNames as  $val ){         $output->writeln('Writing '.$val);     } return Command::SUCCESS; Run command in CLI To be able to run the command in CLI, you need to open your console file and add your Command with Application’s add method : $application->add(new WpPluginMakerCommand());: The final console file looks like this: #!/usr/bin/env php add(new WpPluginMakerCommand()); $application->run(); Now you can run your command inside CLI. $ php app/bin/console app:make-wp-plugin Conclusion If you see the list of the files, yeey, you have it working! You have built your console and custom command that can run inside CLI without using the framework or setting up any environment other than your local device with PHP and Composer installed . In part 2 we will add the Symfony Filesystem component to copy and manipulate files to create brand new r eady-to-use plugins . Anka Bajurin Stiskalov Engineering Lead at Q. Passionate about developing with a focus on making life easier for fellow developers. Always looking for ways to streamline workflows and boost productivity — let's build smarter together! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 25, 2022 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 25, 2022 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Use Symfony Components to Build WordPress Plugin Maker for CLI - Part 2 - Tech Consulting and Software Engineering URL: https://q.agency/blog/use-symfony-components-to-build-wordpress-plugin-maker-for-cli-part-2/ Learn how to use Symfony components to build a WordPress plugin generator CLI. A practical guide to creating scalable and efficient development tools. Use Symfony Components to Build WordPress Plugin Maker for CLI - Part 2 | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Use Symfony Components to Build WordPress Plugin Maker for CLI – Part 2 Use Symfony Components to Build WordPress Plugin Maker for CLI – Part 2 April 27, 2025 — 3 min read In part1 , we learned how to create our own console and command . Also, we learned how to use the Symfony Finder component to find files and output results inside CLI. Now we need to: Allow users to input a new name, author and version of the plugin in CLI. Copy wp-plugin-skeleton folder and rename files based on the new name from the input. Manipulate files content to replace prefixes, suixes, author, version of the plugin with new input data. Add Command Arguments Briefly check docs for Symfony Console Arguments here . We need two required arguments, the name of the new plugin and the author. Also, we need the version argument as optional. Arguments should be added inside the configure method of the command class. Open our WpPluginMakerCommand and add: protected function configure(): void {     $this->addArgument('plugin_name', InputArgument::REQUIRED, 'Plugin name');     $this->addArgument('author', InputArgument::REQUIRED, 'Author ');     $this->addArgument('version', InputArgument::OPTIONAL, 'Version in form v1.0.0'); } Output Argument Values in CLI To be sure that retrieving arguments works fine, output them in CLI for now. Inside your execute method you can use getArgument method to get the input value. You can use getArgument method to get the input value: $input->getArgument(string $name) Retrieve and output arguments like this: $plugin_name = $input->getArgument('plugin_name'); $author = $input->getArgument('author'); $version = $input->getArgument('version') ?: 'v1.0.0'; $output->writeln(sprintf('Success! Plugin with name %s, author %s and version %s is created.', $plugin_name, $author, $version )); Add that before return of the command status: protected function execute(InputInterface $input, OutputInterface $output): int {     $plugin_name = $input->getArgument('plugin_name');     $author = $input->getArgument('author');     $version = $input->getArgument('version') ?: '1.0.0';     $output->writeln(sprintf('Success! Plugin with name %s, author %s and version %s is created.', $plugin_name, $author, $version ));     return Command::SUCCESS; } Command status needs to be at the end of the execute method. We will use Command::SUCCESS here. There is also Command::FAILURE that you can use if some error pops up or Command::INVALID if some argument is missing. Now test your command in CLI: $ php app/bin/console app:make-wp-plugin You will get an error 🙂 “Not enough arguments (missing: “plugin_name, author”)”. Try again with arguments like this: $ php app/bin/console app:make-wp-plugin "My new plugin" "Anka Bajurin Stiskalov" "v1.0.2" You will get a message “Success! Plugin with name My new plugin, author Anka Bajurin Stiskalov and version v1.0.2 is created.” Create a New Plugin Folder with Symfony Filesystem Component Now we can pass input arguments to the plugin maker service to create a folder with the new name. But to create a folder, we need a Symfony Filesystem component. Check it’s docs briefly here . Install Filesystem in your project: $ composer require symfony/filesystem Add dependency to Filesystem in the constructor of WPPluginMaker service: finder = new Finder();         $this->fileSystem = new Filesystem();     } Pass the input values to the createNewPluginFromWpPluginSkeleton method: public function createNewPluginFromWpPluginSkeleton(string $plugin_name, string $author, string $version): Generator from the WpPluginMakerCommand: protected function execute(InputInterface $input, OutputInterface $output): int {    $plugin_name = $input->getArgument('plugin_name');    $author = $input->getArgument('author');    $version = $input->getArgument('version') ?: 'v1.0.0';    $fileNames = $this->wpPluginMaker->createNewPluginFromWpPluginSkeleton($plugin_name, $author, $version); For the folder and file names, you will need a slug version of the name. Add private method slugify to the WPPluginMaker service: /**  * Slugify string.  *  * @param string $text String to slugify.  * @param string $replacement  * @param string $type  * @return string  */  private function slugify(string $text, string $replacement = '-', string $type = 'strtolower'): string  {      switch ($type) {          case 'ucwords':              $text = ucwords($text);              break;          case 'strtoupper':              $text = strtoupper($text);              break;          default:              $text = strtolower($text);              break;      }        $text = preg_replace('~[^\pLd]+~u', $replacement, $text);        $text = trim($text, $replacement);        if (function_exists('iconv')) {          $text = iconv('UTF-8', 'ASCII//TRANSLIT', $text);      }        return preg_replace('~[^-w]+~', '', $text);  } Slugify plugin name from the input and create a new folder with Filesystem: public function createNewPluginFromWpSkeletonPlugin( string $pluginName ): Generator {    $pluginSlug = $this->slugify($pluginName);    $newPluginLocation = __DIR__.'/../../'.$pluginSlug.'/';    $this->fileSystem->mkdir($newPluginLocation, 0775); Run command again: $ php app/bin/console app:make-wp-plugin "My new plugin" "Anka Bajurin Stiskalov" "v1.0.2" You should see a new folder at the root of your project: Wrap $this->fileSystem->mkdir in try catch so you can output an error message in CLI in case of an error. try {     if (!$this->fileSystem->exists($newPluginLocation))     {         $this->fileSystem->mkdir($newPluginLocation, 0775);     }else{         yield "Error creating directory at location ". $newPluginLocation.' Directory already exists.';     } } catch (IOExceptionInterface $exception) {     yield $exception->getMessage(); } Copy and Rename Files Into a New Folder We created a new folder, but it is empty. So, we need to copy all the files to the new location. Some classes inside dierent plugins created from this skeleton will always have the same name. Like Service_Container or abstract classes and interfaces that developers can extend and implement. It can be annoying if you are using some smart IDE like PHPStorm . When you start typing Service_Container, you will get confused for a second about which one to pick when all Service Containers from other plugins begin to appear in the list. That is why wp-plugin-skeleton files have prefixes. Also, class names, constants, package names, etc., use the same prefix too. So we can easily rename them. Add a private method that handles rename of each of those special cases where we have a prefix or plugin name inside the description: /**  * @param string $pluginName  * @param string $fileContent  * @return string  */  private function replaceContent(string $pluginName, string $fileContent): string  {      $fileContent = str_replace( 'Wp Plugin Skeleton', $pluginName, $fileContent);      $fileContent = str_replace( 'Wp_Plugin_Skeleton', $this->slugify($pluginName, '_', 'ucwords'), $fileContent);      $fileContent = str_replace( 'wp_plugin_skeleton', $this->slugify($pluginName, '_'), $fileContent);      $fileContent = str_replace( 'wp-plugin-skeleton', $this->slugify($pluginName), $fileContent);      return str_replace( 'WP_PLUGIN_SKELETON', $this->slugify($pluginName, '_', 'strtoupper'), $fileContent);  } Now inside the loop we need to get files content. We will use str_replace to replace content with our arguments from command line. Then create new files with that content using filesystem dumpFile method : foreach ($this->finder as $file) {     $fileNameWithExtension = $file->getRelativePathname();     $fileContent = $file->getContents();     $newFileContent = $this->replaceContent($pluginName, $fileContent);     $newFileNameWithExtension = str_replace('wp-plugin-skeleton', $pluginSlug, $fileNameWithExtension);     $this->fileSystem->dumpFile($newPluginLocation.$newFileNameWithExtension, $newFileContent);     yield $newFileNameWithExtension; } Run command again and check file names and content inside to see if everything is renamed correctly: $ php app/bin/console app:make-wp-plugin "My new plugin" "Anka Bajurin Stiskalov" "v1.0.2" Rename Author You are almost done. The only thing that is left is to rename the author and plugin version. Renaming the author is plain simple. First, add the author parameter to the replaceContent and pass the input argument author to it. Replace old author with str_replace method: /** * @param string $pluginName * @param string $fileContent * @param string $author * @return string */ private function replaceContent(string $pluginName, string $fileContent, string $author): string {    $fileContent = str_replace( 'Anka Bajurin Stiskalov', $author, $fileContent); Rename Plugin Version The plugin version visible in the WordPress admin page is located in file wp-plugin-skeleton/wp-plugin-skeleton.php, so you can target that file only to change the version. if($fileNameWithExtension === 'wp-plugin-skeleton.php'){     $newFileContent = preg_replace("%[0-9.]+[0-9.]+[0-9]%i", $version, $newFileContent); } Or you can remove conditions and target all version number occurrences in all files. Create Hidden Files The only thing that is left is to create hidden files .gitignore and .deployignore: private function createIgnoredFiles( string $newPluginLocation ): void {     $this->fileSystem->dumpFile($newPluginLocation.'.gitignore', '/vendor');     $this->fileSystem->dumpFile($newPluginLocation.'.deployignore', '# /vendor'); } Final Conclusion Run your command again with dierent arguments and check the files: $ php app/bin/console app:make-wp-plugin "Final plugin" "Mark Markić" "2.10.12" You can now test your new plugin. Copy/paste the final-plugin folder into your plugins folder of the WordPress project. Then, run composer install inside final-plugin folder and activate it inside WordPress admin. Final solution You made it! You have your plugin maker! Whenever you build some good code design and you know that you will need the same pattern or solution over and over, upgrade wp-plugin-skeleton with an example and tag it with a new version in the git repository. Each version should have a clear name and description. Whenever you need to add new stu inside a plugin, that is created from older versions of your wp plugin skeleton , it will be much easier if you just run a command to create a plugin with the same name as existing one and copy/paste necessary files and code that you need. That is what I do, especially because of the Service_Container singleton. When you are building a WordPress plugin, you don’t have any framework that handles service containers and other stu for you. If you are developing something dierent than the default WordPress stu, you are out of luck. You can check our final solution here . Anka Bajurin Stiskalov Engineering Lead at Q. Passionate about developing with a focus on making life easier for fellow developers. Always looking for ways to streamline workflows and boost productivity — let's build smarter together! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 27, 2025 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 27, 2025 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # User Experience Research Methods: How to Figure Out What Your Users Actually Want - Tech Consulting and Software Engineering URL: https://q.agency/blog/user-experience-research-methods-what-your-users-actually-want/ Learn more about gathering insights with the help of user experience research methods to understand their behaviour, needs and pain points! User Experience Research Methods: How to Figure Out What Your Users Actually Want | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > User Experience Research Methods: How to Figure Out What Your Users Actually Want User Experience Research Methods: How to Figure Out What Your Users Actually Want March 19, 2025 — 12 min read User research is an imperative part of designing effective and user-centric digital products. By systematically gathering insights directly from your target audience with the help of user experience research methods , you’ll understand their behaviour, needs and pain points. And this can help you set up a strategy on how to implement those findings into your product or service. User research provides the business with insights on how to align their business goals with user needs. Also, it informs the designers how to shape the user experience in order to meet both user and client expectations. If we’re able to find solutions to the existing problems and offer value, then we’re on a great way to create a positive experience and a successful product. In this blog post, we’ll explore what user research is, when to use it, how to plan it, and review different research methods with real-world examples. It’s all about understanding the challenges and solving the problems of the people who will use your product. What is User Research? Simply put, user research is a systematic gathering of various types of data directly from users, which impacts design decisions and shapes the overall user experience. Why? Because that data offers great insight into how your target audience thinks, what they want and expect and their pain points. There are two main types of user research: qualitative and quantitative. The first one deals with definitive, numerical values, while the other one is a bit harder to express in a simple equation as it deals with user behaviour and subjective experience. You’ll use one of the two or a combination of both based on what stage of the product development you’re in, but more on that in the following sections. We’ll also cover two other important aspects of user research: attitudinal vs behavioural research, as well as generative vs evaluative research. Let’s dive in. Qualitative vs Quantitative Quantitative research answers 3 questions: How many? How often? How much? It’s unbiased, numerical data gathered from a large group of users in strict testing environments. Think of different statistics which can be measured and analyzed: page visits, bounce rates, conversion rates etc. Quantitative user research is best used when you have an existing product or a product that’s in its discovery phase or the final design phase. Quantitative methods include surveys and questionnaires, usability testing, A/B testing, web analytics, funnel analysis, card sorting, click tests, tree testing, desirability research and eye.tracking testing. Not one of these methods is better than the other. Each research method is chosen based on what you want to measure and what results you want to achieve. When choosing a method, think about which one will give you the most precise results taking into consideration the resources you have available. Also worth noting is that hybrid methods are used very often . Combining two, three or more methods yield more precise results. Qualitative methods give insights into user behaviours , trying to understand how they think and feel. It tries to answer the Why?: what are the user’s motivations, problems, why those problems are affecting them and how. This type of research is best used at the early stages of product development. That is to say, in the discovery phase , where we try to determine the problems and offer solutions and value to the product. There are 8 types of methods: grounded theory, focus groups, interviews, diary studies, surveys, participant observation, card sorting and qualitative data analysis (also called thematic analysis). Attitudinal vs Behavioural The easiest way to to distinguish between these two methods is to rename them as: What users SAY vs What users actually DO . Attitudinal methods rely on self-reported data meaning the outcome is a reflection of people’s perceptions, expectations and experience. Gathering this type of data involves asking questions about their experience of the product: feelings, thoughts and opinions, something that can’t be directly observed. Behavioural methods are based on the user’s observed interaction with a product or a service. This way we get more objective and reliable information. Source: NNgroup Generative vs Evaluative Generative methods (sometimes called foundational or exploratory) gain insights into what a typical target persona would look like. It’s typically done at the beginning of the product cycle as it explores the way users do things, why they do it and how they act in certain situations. Main methods of this type of research are interviews, surveys, concept testing, diary studies, and card sorting. Evaluative research is used for validating design concepts and making sure the design is headed in the right direction. Methods include qualitative usability testing, preference testing, surveys, tree testing, first click testing, task analysis, and A/B testing. When to Use User Research? User research isn’t reserved only for the brainstorming, workshops or the discovery phase of the project. Continuous use of research methods throughout the product cycle ensures we’re on the right track and that we deliver the best product possible. In the discovery phase research helps us define product goals, user needs and pain points and user personas. Throughout the design phase research is used to validate design decisions. The post-launch phase matters as much as the aforementioned ones because we have the opportunity to collect insights from users who started using our product. This direct feedback will tell us if we have created a successful product (with room to improve, of course) or have we completely dropped the ball. Most Commonly Used User Experience Research Methods As you may have noticed, there are some methods that fall into more than one category of user research. Since there are so many, we’ve chosen to present the most commonly used ones. Most UX researchers use multiple methods in order to get the best possible data and, as the ultimate goal, the best possible end product. 1) In-depth/User Interviews (Qualitative, Attitudinal) User interviews are a qualitative and attitudinal method and one of the oldest ones when it comes to UX research. Here at Q, we use interviews during the discovery phase to understand our users’ needs and expectations. Getting in-depth feedback straight from the target audience helps us gain valuable insights that shape our product and improve existing features. So, how is this user experience research method performed? The key is to ask open-style questions such as ‘How do you use this app feature’, ‘How would you enhance this feature?’ or ‘What would you use this app for?’. It may seem simple, but be careful when writing down the questions: Don’t use wording that can lead the user’s answer in any specific direction otherwise you won’t get true, honest feedback. The ‘downside’ of this method is that it’s not mathematically exact and it cannot represent the entire target audience, but if performed on a large number of participants, we can extract patterns and shape a user persona which will represent the ideal user. 2) Surveys (Qualitative/Quantitative, Attitudinal) Surveys are another great way for doing UX research if you need to test a larger sample of users quickly. They can be both qualitative and quantitative, depending on the questions you ask. If the questions are based on collecting numerical data, they fall into the quantitative type of research, meanwhile, open-ended questions fall into the qualitative research. Since it all comes down to how the questions are set, this method can sometimes lead to potentially getting wrong insights, which eventually leads to making wrong decisions regarding your software in development. So the key here is to ask the precise questions and aim for real users’ experience. 3) Usability Testing (Qualitative, Behavioural) Usability testing is the golden standard when it comes to user experience research methods, especially in the early phases of the product design. This user-centred approach involves giving users a task to do — or a number of them — while being moderated. While the task is being performed, moderators observe the user’s behaviour as well as listen for their feedback. A big plus of this method is that it doesn’t require a large number of participants. Here, only several of them are enough, and they alone can try and find faults in the tested software with no further need for a large user base explaining how something should actually work. 4) A/B Testing (Quantitative, Behavioural) A/B testing is a widespread method where you need to test two versions of — whatever you need to test. The benefit of this quantitative and behavioural method is that it gives concrete, precise data. It gives numbers and lets us know how users behave while using our product, showing us what works better and what doesn’t. However, this method lacks the ‘why’ a certain user decision’s made, not the reasons behind it. 5) Analytics and tracking user behaviour (Quantitative, Behavioural) Now, something rather data-oriented — analytics and tracking user behaviour. This is where tools such as Google Analytics and Hotjar come into play. With these methods, we can quantify insights and get real-life data on our software. For example, with Hotjar, you can see ‘heatmaps’, where it’s clearly seen which parts of the, e.g., app users click on the most, in which places their cursor stays the longest, etc. The same goes for Google Analytics, a mega powerful tool that enables us to see which webpages users spend the most time on, what the bounce rate of a certain webpage is, and so forth. However, just like with A/B testing, this UX research method doesn’t provide answers for the reasons behind the behaviour. But it’s a great way for detecting flaws in a larger sample of users. 6) Card sorting (Qualitative/Quantitative, Behavioural) Card sorting is a qualitative and behavioural method that aims to understand how users organise and perceive information. This method is used to define the information architecture of a product. The way we do it is giving users labeled cards, and they sort information and ideas into groups in a way that makes sense to them — and see if our product matches their expectations. 7) Diary Studies (Qualitative, Attitudinal/Behavioural) Diary studies are yet another useful method because they track users’ interactions and their experience with our software by writing it in their diary. This method is good for long-term tracking of the user experience and gives us information about the satisfaction (or on the contrary, dissatisfaction) as well as their habits concerning our product. 8) Eye-tracking (Quantitative, Behavioural) A quantitative and behavioural method of using eye-tracking technology is extremely useful as it shows exactly where exactly users are looking when testing the new software, and analyses the way they’re looking at it. With this method, it’s possible to determine which elements or features get the most traction, but also those which are not overly interesting to users. Afectiva, Lumen, and Tobii are some of the most popular tools for the eye-tracking method, offering solutions for getting insights into what captures attention, what doesn’t, what drives engagement, and so forth. Optimisation of a software product or service is the key goal of this method as it quantifies and analyses actual user behaviour and helps improve the final product. User research is all about teamwork. How do we do it? After giving you a brief overview of user research (believe us, there’s a lot more to talk about), we’d like to show you how we at Q utilize these methods to deliver successful and lasting solutions. As a software and design agency, we start working on user research from the very beginning of the project . This discovery phase serves as a playground and a testing arena to figure out the objectives of the product (the business side) and the real-world expectations and problems the users come across when looking at this product (the users’ side). One of the main things we need to determine is — is there a real need for this product? If there is, we try to determine what problems it’ll solve and how to solve them successfully, based on user behaviour related to similar products and of course, user research. If someone wants to create a similar product in an existing niche (the needs of the users are somewhat met), then we determine how this product can perform better than those already on the market. We conduct user research to see how we can provide value to our clients and users. A product that isn’t useful will become obsolete in a short period of time , because no one will use it. That’s another reason why user research is invaluable. You get to plan your resources (time, money and participants) accordingly. So, How to Choose the Right Method? At Q, the use of multiple methods, depending on the specifics of our software — be it a mobile app, website, web app, and so on, is our way to go. Why? Because it helps us gather the largest sample and largest array of insights. From utilising methods that include only several people to even thousands of users, the use of different methods can bring the clearest picture of how to improve our end product. Given our experience in using multiple UX research methods, don’t hesitate to reach out to us if you’d like to build a successful and high-performing software product or service. A big thank you to Matea Lončar, our skilled UI/UX Designer with over 8 years of experience, who co-authored this blog post. A 75% introvert with a passion for all things creative, she sits at her desk more than she’d like to (designing, gaming, drawing or DIY-ing). On the flip side, she’s pretty active: fitness, cycling, hiking with her dog Memphis, you name it. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 19, 2025 — 12 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 19, 2025 — 12 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # User Research: From Understanding Users to Actionable Recommendations - Tech Consulting and Software Engineering URL: https://q.agency/blog/user-research-from-understanding-users-to-actionable-recommendations/ Learn how user research helps teams understand user needs, validate ideas, reduce project risks, and turn research insights into actionable product recommendations. User Research: From Understanding Users to Actionable Recommendations | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > User Research: From Understanding Users to Actionable Recommendations User Research: From Understanding Users to Actionable Recommendations April 19, 2021 — 6 min read Lately, there has been a lot of talk about user research. It’s perceived as this magical thing that can solve every project, but nobody understands why it is needed or how it’s done. Even when it is recognized as needed, the question is who will do it and why asking a couple of questions costs so much. In a complex world crowded with digital products, shifting from digital features to human needs is the only way to make meaningful and innovative products. To do so, we need to grasp the human mindset shifts via behavior principles. We have to fully understand what is lying behind expressed thoughts and understand the real user needs in a broader social context. As Henry Ford said when he made his first car: “If I had asked people what they wanted, they would have said faster horses.” At Q, user research is part of the first stage of product strategy that focuses on understanding the business context and sets the foundations for the project. Product strategists do user research at Q and UX designers duration ranges from a week to a month, depending on the project needs and the client’s wishes. When and why is user research needed? User research delivers many benefits to the business. The product created is based on users’ knowledge, making more certainty about building and reducing delivery time/costs. Research also shifts projects from tech-focused products to those that meet users’ needs and enhance experiences making them more innovative and desirable. By doing the research, we can distinguish user requirements early on in the process: saving clients’ investment by doing it right the first time. As you can see in the figure below, every project stage generates a ten-fold increase in the cost to make changes, so it is better to spend some extra money on good foundations than spend a lot more money later down the line. Project Timeline Now we’ve explained the benefits, but there is still the question of timing. Research is helpful in any of the project stages: Discovery, Development, and live phase. In each of these stages, research is done with dierent methods and brings various benefits. The aim of user research in the Discovery Phas e is to determine who the users are, what they’re trying to accomplish, and how your product or service fits their everyday lives, needs, and habits. User research in the development phase aims to improve the team’s understanding of users and their needs. They test dierent design ideas and prototypes and learn how to develop a service to help users achieve their goals. The aim of user research in the live phase is to assess people’s experience using your service, understand evolving user needs, and test new features, changes, or improvements. User research process To conduct good user research, it is necessary to set the objectives of the research first. When we were developing a training app, the research objective was to understand users’ and trainers’ needs in the digital training space. After having a clear objective, we could choose the best research method, prepare and conduct the research. In the training app example, we decided to use an interview method since we wanted to get the insights that will help us with the app features’ ideation. Before the interviews, we created structured interview guidelines with the interview flow and all the questions. Besides the guidelines, we also needed to recruit the interview participants. In this case, the client helped us by giving us their contacts, but we need to set the recruitment ourselves in other projects. The final phase of research is the organization and analysis of the research insights that lead to valuable and actionable recommendations. In the training app project, we have learned from the trainers that they miss the interaction with clients within the digital space, so we ideated on multiple communicational features. Digital development process User research methods User research methods We use a range of methods to get valuable insights based on the project requirements. After setting the research objective and understanding the project problems, we find the best research method. Some of the most famous methods are user interviews, A/B testing, and usability testing. User interviews are used to get a broader understanding of products/services in users’ everyday lives. In this case, we ask more open questions to get to the social phenomena understanding that can, later on, be translated into product-oriented recommendations. Framing questions as social phenomena allows us to get beneath the surface of what drives behavior and creates value. Framing questions For example, when developing the online partying platform, we interviewed people about their clubbing experiences in general, what they like and dislike about it, what communication channels they use before, during, and after the party. We also wanted to understand the dierences between online and oline partying space and their needs connected to those two. How do you agree on where to go with your group of friends? What are the things you don’t miss from clubs? Have you ever been to an online party? How dierent was that for you from the real one? Example of user interview insights Usability testing is usually done with an existing product or prototype, where we observe how the user is interacting with it. We carefully create the tasks for users where we can see how they use the product – e.g., If we ask you to send the form via the app, how would you do it? How did you find the experience? This method is measurable and more focused than the interviews. Usually, we use this method to see how the current or possible future product works with users. Sometimes, we use more than one method in the project. An example is our last project for a digital food system. First, we conducted 8 hours of user interviews with the questions based on the existing system’s eiciency and satisfaction. We translated interview pain points into the UX hypothesis that served as a foundation for creating three design upgrade prototypes. Those three prototypes were used in usability testing to compare users’ eicacy and satisfaction between the current system and new design upgrades. Using these two methods in one project, we could create a final design upgrade that will be valuable. Example of deliverables User research at Q must end with actionable insights that feed future product development. Our final deliverables are in the form of a package that includes insights, observations, the scale of pain points, quotes, research prototypes, and recommendations. Ema Gerovac Ema is a Product Strategist at Q agency. She loves thinking about the human side of digital products. A hard-working perfectionist, especially when it comes to eating sushi and leaving no crumbs behind. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 19, 2021 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 19, 2021 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # UX Analysis of Best Practices: Roles, Methods, and Knowledge Sources - Tech Consulting and Software Engineering URL: https://q.agency/blog/ux-analysis-of-best-practices-roles-methods-and-knowledge-sources/ Discover best practices through an in-depth UX analysis of roles, research methods, and knowledge sources that drive user-centred design. UX Analysis of Best Practices: Roles, Methods, and Knowledge Sources | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > UX Analysis of Best Practices: Roles, Methods, and Knowledge Sources UX Analysis of Best Practices: Roles, Methods, and Knowledge Sources June 8, 2025 — 6 min read How do design roles shape better products? Designing digital products isn’t just about how something looks. It’s about how it works, how it feels, and how easily users can navigate it without friction. And behind every good product is a team of people working across different roles, each with a unique focus but a shared goal: making the experience better. The core premise for this is a thorough and an in-depth UX analysis of best practices. Here’s how those roles typically play out — and which UX practices keep us moving in the right direction. The Roles: Not Just Job Titles In many teams, there’s a bit of overlap between roles, but they still bring different strengths to the table. UX Designer. Think of them as the architect of the user journey. UX designers are the ones asking the big questions early on: What is the user trying to achieve?, What stands in their way?, and How can we make this smoother? Their UX analysis involves user research, journey mapping, flow diagrams, and wireframes — all to ensure that the digital product solves the right problems in a way that feels natural. They often collaborate closely with product managers and researchers, continuously iterating based on user feedback and testing. UI Designer. The UI designer picks up where UX leaves off — translating structure and logic into a visually coherent and engaging interface. They define the look and feel of the product through color systems, typography, spacing, and component behavior. UI designers also think about accessibility, ensuring interfaces can be used by as many people as possible, regardless of ability. Their role bridges aesthetics and usability, working hand-in-hand with design systems and interaction guidelines. Art Director. The art director focuses on the bigger creative vision — not just for a single screen, but often for an entire product, campaign, or brand system. They guide the overall style, tone, and emotional impact of visual output, ensuring cohesion across different touchpoints. Art directors often lead or mentor designers, give creative direction, and collaborate with marketing, branding, and leadership teams to make sure every design decision reflects the company’s identity and values in a meaningful way. Web Designer. Sitting at the intersection of UX and UI , web designers often wear multiple hats — especially in smaller teams or agencies. Beyond layout and visual design, they frequently dive into implementation, using tools like Webflow, Framer, or other no-code and low-code platforms. Some even collaborate directly with developers or handle simple front-end code themselves. Their work balances form and function, with a strong focus on responsiveness, page performance, and driving key outcomes like conversions or sign-ups. What Good UX Practice Looks Like Every project has its own context, constraints, and challenges. But no matter the size or industry, there are principles that consistently make a difference in how well a design process runs — and how good the outcome feels. Start with questions, not assumptions. One of the most valuable things a designer can do early on is pause and ask: Why are we building this? Who is it for? What’s the actual problem we’re solving? Research doesn’t have to mean a 3-week deep dive — sometimes it’s just mapping out user pain points, reviewing analytics, talking to support teams, or looking at how competitors approach a similar challenge. Use moodboards, flows, and low-fidelity drafts early. These help align the team visually and strategically before jumping into high-fidelity work. Moodboards are a great way to test direction without wasting hours on polished screens. User flows and quick wireframes let everyone get on the same page before pixels start flying. Stay open to iteration. First versions are rarely final versions — and that’s okay. Design is not about getting it perfect on the first try, but about learning and refining. Whether it’s feedback from internal reviews, user tests, or live product data, iteration helps reveal what really works (and what doesn’t). Prioritise clarity and consistency over cleverness. Novelty can be fun, but if users are confused, it fails. A great UI often feels invisible — it doesn’t demand attention, it just works. Reusing familiar patterns, keeping layouts predictable, and maintaining consistency across screens builds trust and reduces cognitive load. Collaboration is everything. Designers don’t work in a vacuum. From kick-off meetings to dev handoffs, the best results happen when design, product, and development communicate openly — sharing ideas, giving feedback, and solving problems together. Where We Learn (and Keep Learning) Great design doesn’t come from instinct alone. It’s the result of constant exposure to new ideas, honest feedback, and learning from others. Whether you’re new to the field or 10+ years in, these are some of the places that help us grow: Nielsen Norman Group (NN/g) A cornerstone of UX education. Their research-backed articles, reports, and certifications are referenced by design teams around the world. If you want to understand user behavior or improve usability heuristics, this is the place to start. Smashing Magazine Known for in-depth yet practical content, Smashing covers everything from UI trends and accessibility to front-end performance and cross-platform design. It’s especially helpful for designers working closely with developers. Design Systems & Pattern Libraries Whether it’s your own team’s system or ones from companies like Shopify, Atlassian, or IBM, looking at how other teams handle components, states, spacing, and tone helps inform better decision-making and structure. Conversations with your team Don’t underestimate the power of internal learning. A five-minute Slack chat with a developer can clear up constraints you weren’t aware of. A quick debrief with a PM can help reframe a user story. Regular feedback sessions — even informal ones — make a huge difference in building alignment. Community and platforms While Dribbble and Behance are more visual, platforms like UX Collective, Medium, or even design Twitter are full of real-world experiences, case studies, and debates worth reading. It’s where ideas are tested, challenged, and improved. Closing Thoughts Design isn’t about pixel-perfect screens. It’s about solving real problems in real contexts. And that takes collaboration, clarity, and curiosity. Whether you’re designing for a mobile app, a web platform, or something in between, what truly matters is how well you understand the people on the other side of the screen — and how your team works together to support them. Josipa Sustek A U/UX designer focused on building user-centred digital products across web and mobile platforms. Experienced in structuring complex flows, developing interactive prototypes, and collaborating across teams to deliver intuitive and accessible experiences. With a background spanning SaaS, government, healthcare, logistics, and more, this designer brings clarity, strategy, and consistency to every project. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 8, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 8, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Visit of the US Ambassador - Tech Consulting and Software Engineering URL: https://q.agency/blog/visit-of-the-us-ambassador/ Q agency welcomed US Ambassador W. Robert Kohorst to its Zagreb headquarters to discuss business, US market expansion, and Croatia-US relations. Visit of the US Ambassador | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Visit of the US Ambassador Visit of the US Ambassador May 30, 2019 — 2 min read Our headquarter oice in Zagreb was honored by the visit of the US Ambassador W. Robert Kohorst. We talked about business operations, projects, plans for the future and the ambassador had the opportunity to meet our US clients who were on a business trip in Q at the moment. Ambassador Kohorst’s interest in our business strategy and development was sparked by his own business roots. He wanted to know more of our plans for accessing the US market, broadening our reach and the challenges we face along the way. The discussion also leads to the topic of a bilateral relationship between the two countries, the United States and Croatia. The motif is set on how can the US embassy additionally help Croatian companies in the States and American investors in Croatia. On that occasion, our CEO, Filip Ljubic, said: “We are happy to have the opportunity to host US Ambassador Kohorst and to present him the projects we worked for the US market. Exchange of knowledge and experience is crucial because those who can aect laws must first hear what is going on in the field. That is why we were delighted to have him here and share our experience with the ambassador. “ In the United States Q is operating through Los Angeles and New York oices, and so far has successfully completed projects for leading US companies such as Coca-Cola, Facebook, Walmart, or United States Postal Services. Last year, Q was also awarded the REBRAND 100® Global Award from New York together with US HP and Cadillac for brand excellence. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 30, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 30, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Visit to Smart Pension - Tech Consulting and Software Engineering URL: https://q.agency/blog/visit-to-smart-pension/ Discover how our developers visited Smart Pension in London and explored their innovative fintech platform, team culture, and technology. Visit to Smart Pension | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Visit to Smart Pension Visit to Smart Pension January 27, 2019 — 2 min read Smart Pension is our new London based fin-tech client disrupting and revolutionizing the pensions industry. Our developers paid them a visit to meet with other members of the team and discuss further product development. About Smart Pension Smart Pension is a global savings technology platform provider. It is also one of the UK’s largest providers of workplace pensions. Its award-winning master trust is MAF-accredited and overseen by independent professional trustees. It was co-founded in 2014 by Andrew Evans, CEO, and Will Wynne, MD, and launched in May 2015. Europe’s second-largest asset manager Legal & General Investment Management (LGIM) took a minority stake in the digital pension platform in 2016, part of a move by LGIM to invest in high-achieving, innovative technology that has a positive impact on the wider economy. In 2017, Smart Pension was named “Fintech Innovation of the Year” and the overall winner in the “Digital Leaders 100 Awards” , and at the European Pension Awards last year it was named “Master Trust of the Year” . Here are the 10 great reasons why working for Smart Pension is great (written by our developers after the London trip): 1. Work with some of the top people in the Ruby/Rails community 2. Well funded startup with secure future and organic growth 3. FinTech startup without hassles that are usually connected to financial companies 4. Perfectly balanced teams with just the right number of devs/QA engineers per team 5. Concentrated on having top code quality 6. Codebase has more than 96% test coverage! 7. Oices in UK, Poland, US, and Croatia — opportunity to travel and learn 8. Highly organized but at the same time relaxed work atmosphere 9. Regular team meetings and get-togethers 10. Exceptional work/fun ratio Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 27, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 27, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # We are serious when it comes to ping pong and foosball - Tech Consulting and Software Engineering URL: https://q.agency/blog/we-are-serious-when-it-comes-to-ping-pong-and-foosball/ Q takes ping pong and foosball seriously, with monthly tournaments and one-on-one challenges bringing plenty of competition to the Fun Room. We are serious when it comes to ping pong and foosball | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > We are serious when it comes to ping pong and foosball We are serious when it comes to ping pong and foosball December 3, 2018 — 1 min read We are good at coding, but you should see us playing table tennis and table soccer. From monthly tournaments to one-on-on challenges, there is always something going on in our Fun room. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 3, 2018 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 3, 2018 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # We Have a New CEO! - Tech Consulting and Software Engineering URL: https://q.agency/blog/we-have-a-new-ceo/ Explore Q's dynamic shift as former CEO Filip offers perspectives on the appointment of a new leader in our latest blog post! We Have a New CEO! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > We Have a New CEO! We Have a New CEO! April 3, 2024 — 2 min read I became the CEO of Q in September 2015. By the end of that very year, we’d visited Dubai, Zürich and Copenhagen, working hard to convince people to choose us as their trusted development partner, although at that time we had zero employees, no real references and no brand. Today, things are much different. Q has grown strong, built an international brand, received many globally recognized awards (including the Employer of the Year Award for three years in a row) and we even got listed as one of the highest-quality software providers in the world. After a somewhat unusual 2023 for the entire IT industry, all our current figures, KPIs and results are again top-notch. The last 6 months were the best in the history of our company and the following 6 months look great too. We’re super stable and sound, which builds trust with our partners and clients. Speaking of clients, I’m especially proud to say that today we support globally — on the highest strategic level — Fortune 500 companies, media empires, oil and gas giants, Premier League football clubs and even a foreign government on its most sensitive and complex state matters. Yes, we became a hardcore-engineering-company, to the core! Focused on specific industry verticals, ensuring a better understanding of our clients’ respective industries to encourage innovation and technical edge. Such a strong technical firm requires a strong technical CEO. A leader who can lead the way to the new tech trends, AI and the future of software development. My long term partner, co-owner, and a loyal management colleague and a dear friend, Harry Gorajscan, was an obvious choice. Enjoying the full support of all our directors and heads, and recognized by our entire organization, I literally have zero doubts that our former CTO and now CEO, Harry, will lead Q to the new chapter of sheer success. And me? As a Chairman, I’ll continue doing globally what I do best — political connections, lobbying, business development, corporate relations, client pampering and, of course, developing and coaching our own key people and advising them daily on all strategic matters. Harry and I will keep our daily communication open and we’ll continue building our 10+ years business relationship and friendship. @Harry — this is your era, you deserved it and now go and kick some ass! Filip Ljubic Filip is a passionate leader with a strong international background with over 15 years of executive experience. In his free time, he loves being in nature, hiking, and enjoying family time with his 3 kids. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 3, 2024 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 3, 2024 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # We knew it! Q is The Best Employer of 2020! - Tech Consulting and Software Engineering URL: https://q.agency/blog/we-knew-it-q-is-the-best-employer-of-2020/ Q agency was named Best Employer of 2020 by Moj Posao, recognising high employee satisfaction, engagement, loyalty, and team spirit. We knew it! Q is The Best Employer of 2020! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > We knew it! Q is The Best Employer of 2020! We knew it! Q is The Best Employer of 2020! December 11, 2020 — 2 min read So far, 2020 has been one hell of a year, but we’re fighting it fiercely and successfully! We’re glad we can wrap it up by announcing the “Best Employer of 2020” award in the category of mid-size companies and the “Best new entry” award for the best-placed company participating for the first time. This survey involved 48 companies and more than 4,300 employees. An anonymous survey was conducted by the leading employment website in the region, “Moj Posao”, to determine which companies are the best ones to work in. Employees were asked to rate their satisfaction and willingness to recommend their employers to friends and family. Our employees have spoken, and we’re thrilled that survey results showed employees’ satisfaction, commitment, and motivation at the highest levels. 93 % of employees would recommend Q to their friends and family 90 % of our employees are feeling engaged at work Our highest-ranked categories are: Challenging work, Loyalty, and Team Spirit Since our beginnings, we were extremely aware of the importance of having a strong corporate culture and high employee engagement. That is why we always invested heavily in our people and their satisfaction at the workplace. Today, we can see a very concrete and tangible impact of our eorts. While the company’s productivity and revenue are crucial, none can occur without happy and motivated employees. People do come first. Since we went full remote, we hired about 60 new talents who never saw other colleagues, never sat and drank coee in the kitchen with them, or took the tour of the oice. Despite all of this, they felt that they came to the right place. We have introduced 15 employee benefits, and optimized several processes to be faster, more eicient, and provide more to our customers and colleagues. With transparent and honest communication, we created clear expectations of each other. In a changing, complex, and competitive world, our Qulture is what pushes us forward and sets us apart from others! This award is a reflection of our culture and excellent confirmation that we are going in the right direction. Qumans, you made this (mile)stone a reality, and this is a real testament to all the impressive work every one of you keeps delivering. Thank you for all your eorts and what you bring to Q’s culture. This award belongs to you! Anja Oppenheim Baresic Anja is HR Manager at Q agency. Also happens to be a psychologist. Passionate about everything human in Human Resources, especially people development and employee engagement. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic December 11, 2020 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic December 11, 2020 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # We were at CEBIT—and it was great! - Tech Consulting and Software Engineering URL: https://q.agency/blog/we-were-at-cebit-and-it-was-great/ Q attended CEBIT in Hannover, showcasing its innovative “Escape to Croatia” experience and connecting with visitors and potential business partners from around the world. We were at CEBIT—and it was great! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > We were at CEBIT—and it was great! We were at CEBIT—and it was great! November 30, 2018 — 2 min read CEBIT is the largest and most international computer expo. The trade fair is held each year in Hannover, Germany. It is considered a barometer of current trends and a measure of the state of the art in information technology. “Escape to Croatia” The escape box was the highlight of the stand as it attracted visitors from outside and provided the unique experience of a prize contest on the inside. The interior of the box was completely dark, with gravel on the door and the scent of lavender in the air providing its visitors a glimpse into Croatia’s natural beauty, something that the lucky winner will experience in reality. A quiz about Q and Croatia was played in the middle of the box on a mounted tablet PC as white strips of light circle around the visitor, counting down the quiz time. Through the quiz, visitors could learn about the company and its cultural context but also enter the lottery to win a trip to Croatia. At the end of the game, the light strips stop at the exit of the box showed the visitor a way out of the box and into the quick talk area, where the visitor could meet people from the company and arrange a meeting to discuss potential collaboration. We’re already looking forward to CEBIT 2019! Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 30, 2018 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 30, 2018 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # We were live on N1, an exclusive affiliate of CNN in Croatia - Tech Consulting and Software Engineering URL: https://q.agency/blog/we-were-live-on-n1-an-exclusive-affiliate-of-cnn-in-croatia/ Q’s COO Vedran joins N1 TV live to discuss Q’s growth, business journey, entrepreneurship in Croatia, and the company’s work with The Times. We were live on N1, an exclusive affiliate of CNN in Croatia | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > We were live on N1, an exclusive affiliate of CNN in Croatia We were live on N1, an exclusive affiliate of CNN in Croatia January 24, 2019 — 1 min read Vedran, our COO, was hosted live on N1 TV, a subsidiary of CNN in Croatia. Vedran talked about Q, how and when did we start, our way of doing business, challenges we faced along the way, and gave his opinion on entrepreneurship in Croatia. Also, we talked about the new project we are doing for The Times, a premium British newspaper brand, recognized the world over. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 24, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 24, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # WebCamp Zagreb - Tech Consulting and Software Engineering URL: https://q.agency/blog/webcamp-zagreb/ Q supported WebCamp Zagreb, a major technology conference bringing developers, designers, and entrepreneurs together to learn, share knowledge, and connect. WebCamp Zagreb | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > WebCamp Zagreb WebCamp Zagreb October 14, 2019 — 1 min read WebCamp Zagreb is a technology-oriented conference for developers & designers, which attracted over a thousand professionals and entrepreneurs. The social and educational benefits that conferences bring to attendees is irreplaceable. We supported the Web Camp Zagreb and went there to present ourselves. It gives you the opportunity to talk to people one-on-one about what they are working on, and they may even give you advice on how to enhance your own work. You have the opportunity to ask presenters questions about their work and the rationale behind it, which you can’t do when reading journal articles. Conference attendance dramatically enhances both your professional and personal development, as well as providing you with tools and skills which you cannot be taught in-house or online. The focused nature of learning at a conference allows you to dig deeper with the understanding of your topic of interest. Blanka Cesic Blanka is always on the lookout for talented and passionate individuals to join our growing team at Q agency. She is a Grammar nazi but trustful and kind, so you can count on her if you have some kind of outbreak or a spelling dilemma GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 14, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 14, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Website Strategist - Tech Consulting and Software Engineering URL: https://q.agency/blog/website-strategist/ A website strategist is the person responsible for leading the planning, design, development and ongoing growth of a website. Website Strategist | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Website Strategist Website Strategist March 12, 2025 — 7 min read Who is a website strategist? A website strategist is the person responsible for leading the planning, design, development and ongoing growth of a website. What is the necessary experience for a website strategist? Business experience Website strategists must at all times keep in mind two things: Business objectives Target audience Being able to create revenue from your website and fulfill your audience’s needs can come only from understanding your company’s business, which is then translated to the web. This is why a great website strategist has to have both business experience and intimate knowledge of the web as a medium. This in turn results in a great website strategy . If your company’s clients are hiring you as a website strategist , you must understand their business and their target audience. This is certainly the case for digital agencies, but for software engineering companies too (think e-commerce, web apps). Marketing experience Is experience in marketing necessary for a web strategist? Absolutely, definitely – yes. Why? Because your company’s website must be at the center of all your digital and traditional marketing efforts. Done right, your website is the most cost-effective solution for your business, especially when starting out. That’s why it is imperative to have hands-on experience in one of the main digital marketing areas: PPC (pay-per-click) marketing SEO (search engine optimisation) Content marketing Social media marketing Email marketing Mobile marketing Ideally, detailed knowledge of one area and general in others. Why? Because by using these channels, you will drive traffic to your website . Digital marketing budget management comes into play here. Social networks, search engines and technologies come and go, but your website stays. It is tied to your brand. If cared for properly, its traffic grows and brings in more revenue. It is also the cheapest way to sell goods and services, compared to traditional marketing and physical stores. Your website reflects your brand. Ask yourself: What are the messaging and design conveying to the visitor? Analyst experience To be able to make sense of what your website’s visitors are doing on your web pages, you should be proficient with web analytics and behaviour tracking tools. Most importantly, to see if they are converting from visitors to leads and buyers . Here are some of the most popular ones: Web analytics tools: Google Analytics Matomo User behaviour tracking tools: Hotjar Microsoft Clarity The analytics tools provide quantitative, historical data and metrics, while the behaviour tracking ones offer quality data – real-time insights into your visitors’ behaviour. The insights you gain from the data will enable you to make the best decisions on how to improve your website. This is a never-ending process. It’s called conversion rate optimization (CRO). Project management A website strategist leads a web project from start to finish. She is a high-level consultant that works and communicates with various teams and stakeholders, such as: Business stakeholders Content writers UX/UI designers Web developers and DevOps Marketing Sales and Leadgen Also, you may have to: Select new employees who will join your team Delegate parts of your work in-house Outsource to external organisations Mentor your team A website strategist manages cross-team communication, budgeting, sets timelines, is responsible to their line manager and tracks the return on investment. Which technical skills are essential for a website strategist? HTML HTML is at the heart of the World Wide Web : it defines the structure of each and every web page and its content. Any serious website strategist should be able to look at the source code of a web page and understand it. Groundwork experience is necessary here. CSS and Java Information architecture Information architecture defines your website’s content and functionality. It also defines the relationship between the aforementioned two. Do not confuse it with site navigation or user interface. Finally, a sitemap visually represents the organisation of your website’s content. The strategist understands the information architecture and makes recommendations to improve the user experience. DNS The Domain Name System changes domain names (such as www.somewebsite.com) into IP addresses (172.253.117.138, for example) that servers and computers use. Understanding domains and subdomains is important for your business decisions. For example, you may decide to place your web shop in a subdomain. Or select an entirely new domain, based on rebranding that management decided to do. In that case, redirects of nearly every web page on your domain must point to the corresponding pages on the new domain. Skipping this may result in a catastrophic loss of traffic. Also, people will google your old brand. They still did it for 2 years after I moved a web portal of mine to a new domain because I rebranded it! CSS CSS controls how a website will look. It is separate from HTML – which is a great thing – because companies often change the design of their website every 1.5-2 years. The website’s content stays unchanged, while you can modernise its appearance. And adapt to new devices! Know that it’s essential for responsive web design. As a website strategist, you should at least be acquainted with it, because it impacts user experience. JavaScript JavaScript first added interactivity to websites. Today, complex web applications are being built with it and there are many frameworks available. This is why experts in different JavaScript libraries are sought after. You do not need to know how to program in it, but know the possibilities it offers. Web browsers and responsive web design Since the Web’s inception, many browsers have dominated the market, just to fall behind once new ones came. The arrival of the first smartphone has changed the way websites are accessed forever. Understanding the way the same content of a website will be read and interacted with, in so many different ways, across a myriad of devices, is crucial. Never assume how this will happen. Experience it yourself. Your quality assurance expert comes into play here. User experience User experience will be the decisive factor in whether your website’s visitors will stay or tap the back button and go elsewhere. The experience springs from how well the user interface of a website has been designed. Things get more complex when a web application or shop is concerned. You don’t necessarily need the hands-on experience of a UX/UI designer. But a great skill to possess is the ability to put yourself in your user’s shoes. Finally, it is the users themselves who will have the final world. Behaviour tracking tools will clearly show you that. Knowing your way around a tool like Figma is a plus, so you can quickly create wireframes to discuss with your design team. Understanding web development Take an introductory course on a back-end programming language (like PHP or .NET, for example). Grasping the basics of how these technologies operate will take you a long way. Your goal here is to be able to communicate with web developers. Without a great web developer, you won’t get too far. Understanding how the system works expands your knowledge on what is possible. Conclusion A website strategist is a high-level consultant, experienced in areas of business, marketing and technology. This person must also possess excellent communication skills, since the nature of their work overlaps with various other teams and stakeholders. If you are a website strategist for a client, be aware that the vast majority of them do not understand many of the concepts and technologies with which you are working on a daily basis. Need a seasoned website strategist? Contact us now to discuss your web project: Luka Maras A digital marketing expert with over 20 years of experience as a marketer, designer, content creator, strategist and lecturer. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 12, 2025 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 12, 2025 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Website Strategy: The Ultimate Guide to Building Websites - Tech Consulting and Software Engineering URL: https://q.agency/blog/website-strategy-the-ultimate-guide-to-building-websites/ A step-by-step guide on building websites with a bulletproof website strategy. See how to achieve your business goals and meet user needs. Website Strategy: The Ultimate Guide to Building Websites | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Website Strategy: The Ultimate Guide to Building Websites Website Strategy: The Ultimate Guide to Building Websites January 9, 2025 — 22 min read What is a website strategy? Website strategy is the process of building websites that helps you achieve your business goals and meet your users’ needs. Table of contents Introduction What website strategy isn’t Website strategy benefits Business part – your company and your clients: 1. You and your business 2. Industry 3. Target audience 4. Features, benefits and FAQs Tech part – your website: 5. Website 6. Content 7. Design 8. Development 9. Performance, conversion optimisation and troubleshooting Do not be afraid to jump to another step of your strategy and then come back later to finish the one you were doing. It’s better to vary your process a little bit than to get bogged down in any of the phases. Yes, this process will yield some amazing results. But just writing and writing can be boring. If I get an idea for website visuals or some content pieces, I just quickly sketch them out. Sometimes I even create a basic HTML mock-up of a page to give myself a better sense of direction. Website strategy is not: — A one-time thing. If you are serious about using the Web to achieve your business goals, your website should be a never-ending work in progress . This doesn’t mean that you will never get to launch or redesign your company’s website. You will. However, as your business evolves, so should your website, to mirror its growth. — A quick, 5-minute process. Laying out your Website strategy may seem like a long process, especially in the beginning. Do not get discouraged. You should go through all the steps. Trust me, this will pay off manifold, especially in the long term . — Just a way to choose a specific technology. Certainly, choosing the right technology for your website will be one of the steps when formulating your Website strategy, but it’s not the end goal. Technology (software) is just a means to an end. — Set in stone. Keep in mind that your website strategy isn’t an immutable law. As your business changes, so will your goals. The strategic process will make it way more easier for you to adapt to changes and keep your new goals firmly in your sights. Website strategy benefits Website strategy bridges the gap between business and IT. It brings together business goals and website users’ needs. — Master of your own domain Yes, pun intended. Big tech companies and online services come and go, but your domain and your website are yours. For example, Google or Facebook may change their rules for advertising, but no one can control your e-mail list to which you send your newsletter. A well-designed and executed Website strategy will: — Save you time and money in the long term. Without a strategic approach to building websites, you are in a constant state of flux. The targets are unclear. Companies try to solve this issue by throwing more money at it. A new technology, the latest social network marketing gimmick, a visual redesign – without a clear goal and a roadmap to get there, all these things are pretty much useless. — Help you answer any questions in relation to your website. Issues and doubts will show up, whether during the process of building your website, or after the launch. This is normal. The great thing is that your Website strategy will help you find answers quickly. You just have to go back and read the answers you wrote down, for a particular step of your Website strategy. — Complement and reinforce your “offline” business. If your website is straightforward and easy to use, your customers will expect the same kind of service in you physical store. It goes the other way around, too. — Benefits for UX designers and developers. The main problem with most UX designers and developers: They don’t think like a business owner does. A company hires a web developer or an agency to build their new website. The work is done, the agency got paid and that’s it. The new website doesn’t bring in any revenue to the company. Unfortunately, this scenario is a very common one. That’s why a web strategist is far more valuable to a business then a great designer or a highly skilled developer. If you are a web developer or designer, learning how to craft and execute a good website strategy will make you stand out from the herd. As you learn about the process, you will understand that you have to marry IT and business. This union is what brings in profits. It’s a win-win for all sides involved: Your client, their clients (end users, i.e. website users) and you. — Benefits for managers and project leads. You will learn how web technology ties in to business goals. You don’t have to understand the nitty-gritty of web programming or the latest front-end technologies. What you have to understand is how different aspects of your website strategy fit in with your company’s vision . You will learn to ask the right questions, such as: what kind of content our users prefer? In what format? What kind of design and functionality will drive up subscriptions? Etc. 1. You and Your Business Your website should reflect your values, who you are and your purpose, no matter what industry you are operating in. To be able to create content (as well as the look and feel) for your website that is authentic , you must answer the following questions: Your business What do you love to do? In what area do you excel? Your values What are your values? Your purpose Why do you do what you do? Think deeply about your answer. This is not about your knowledge and skills, but why you chose your specific line of business and not something else. Let me give you an example: Any architect can tell you that they are designing buildings because they have the necessary skillset: That she has mastered the science of statics and strength of materials, the art of designing buildings so that they are functional and safe, etc. But an architect that stands out may tell you that she designs zero energy buildings because her main concern is humanity’s impact on environment. She enrolled into architectural studies because her talent for design makes it possible for her to directly contribute to her vision of a better world. Think how strong a selling point that is. Her message will reach a very specific audience. The more specific and unique your offer is, the higher you can charge for your services. Why? Because you are positioning yourself as a specialist within your broader industry. Speaking of which… 2. Industry If you do your website strategy properly, you will surpass your competition. Why? Because only a handful of companies take this approach to building and redesigning websites. Competition What are the characteristics of other companies and individuals that operate in your industry and market segment? Opinions What is being praised and sought after? What is being criticized? Your unique selling point After answering the preceding three questions, stand back and take a more objective look at your business. Ask yourself: What differentiates my business from others? Usually, you can stand out in only one of the three areas for your service or product: Quality Price Time Once you have identified your area of differentiation, remember to converge all your website building efforts in that direction – content (text, video, downloadables), design (user experience and user interface). The last thing you want to have is just another website in a sea of blandness. 3. Target Audience Identifying your target audience – your website users – is crucial. As well as knowing their needs and aspirations. Like I mentioned in the previous section – your website should reflect your values. But that must be made in conjunction with making your website geared towards your audience . Why? Because the truth is: Nobody cares about you or your company. All your website visitors care about is what you can do for them. Your website definitely should reflect your values, because you want customers who share those same values. But those values should come through messages targeted at your audience. And to know who you are offering your products and services to, answer the following questions: Persona – the profile of your ideal client Age? Sex? Occupation? Location? The persona will help you to create content and design your website as if you were creating it for one person. Of course, you are targeting a wider audience, but anyone who visits your website should have a feeling as if it was created just for them. Their views on your industry? What annoys them the most in your industry? What are they absolutely amazed with? What keeps them up at night? 4. Features, Benefits and FAQs Make the benefits your business provides stand out on your web pages. What problem are you solving? What wish are you fulfilling? This is where you have to jot down what your product or service is about: Why will someone want to buy it – what’s in it for them (benefit)? As well as the features and potential objections. This material will be the core content of each individual service or product page. It all boils down to this: Each business either solves a problem or makes a wish come true. Here is a quick example: A mobile phone is a necessity in today’s world. If you are looking for work, need to keep in touch with relatives and friends, you need it. A basic, no-name mobile phone will solve this problem (it doesn’t even need to be a smartphone). On the other hand, the latest iPhone, encased in a golden frame is not a necessity. Someone who will buy it definitely goes beyond the basic need to stay connected. This is an example of fulfilling a wish. Alright, let’s see the features and benefits through an example now: Features Let’s say you are selling computers. In this case, the features can be: i9 processor 32GB RAM 1TB SSD hard drive OK, these are the features. But how do they benefit your potential clients? Benefits Because of the power your computer packs, it can: Boot under 3 seconds Run several resource-demanding programs all at the same time Store and retrieve data in the blink of an eye Benefits should be the most prominent part of your web pages’ content. That doesn’t mean that you shouldn’t list your products’ or services’ features. You just don’t put them first. If your website is an online store, things like discounts and free shipping offers should be among the most prominent elements. FAQs or objections? You should counter any objections to your services or products before they are raised. This can be done: On each product page individually. On a single web page, such as a frequently asked questions (FAQ) page. The latter is more common for websites that are about a single, specific service. This page or section of your website is sometimes labeled “support”. Writing down the answers to the most common objections you’re likely to have from your customers will ensure: Your users don’t choose your competitor’s website because they have done their due diligence while you haven’t. Relieve you of having to reply to emails and phone calls because you didn’t address those issues on your website. That you show your understanding for your customers’ needs and worries. 5. Website Finally! You made it through the conceptual, analytical and documenting phase to emerge on the other side and start building your website! Now that you have successfully defined the first part of your Website strategy, what follows is the actual website building process. Here, you will define: Your website’s goals Your visitor’s needs The scope of content and website architecture The website’s functionality Based on the last two, keyword research and design decisions will be made. Website goal [insert generic image of an arrow hitting a target here] What is the main goal of your website? The most-heard answer is “to increase my profits”. This is logical, because: If your website doesn’t make you any money, it’s just a liability. However, some goals are different, like: increasing a brand’s reach or raising consciousness about a cause that’s important to you (environment, a political cause, etc). If you can, discuss this with someone who isn’t directly involved with your business. Because what often happens is that, as the owner, you can’t see the forest for the trees. Once, we had a potential client – a company that wanted to launch a subscription-based educational web portal. As the preliminary consulting meeting progressed, they realized that a board game would be their ideal product, not a website! How is that for a change? Be completely honest with yourself. You may be amazed at what will emerge to the surface during your website strategy creation process! Visitors’ needs Why would someone visit your website? To get informed? To buy something? To ask about a service? To read and apply instructions from a how-to or a tutorial? Content scope – website architecture Take a pen and a piece of paper. Finally! Sketching time is here! A lot of websites follow a hierarchical structure like this one: Be aware that you should keep your pages at a maximum “depth” of 3 clicks from the homepage. More than that, and you will turn away your users. 6. Content Content makes the world go round Content forms the basis of your website. In fact: Content is, and always will be, the most important part of your website. Content is king, period! Before starting to create content, you should research: Keywords Writing the copy for your website should always be done with SEO in mind (in other words, Google). For keyword research, you can use the free Keyword planner tool from Google, or commercial ones like KWFinder or SEMRush . KWFinder is the best SEO tool out there when you take into account the quality/price ratio. It is very simple to use and the benefits are huge. I have used it to boost the organic traffic for many local and international websites that I did SEO for. If you want the best solution out there regardless of the price, go for SEMRush. If your website is new (or hasn’t even been launched yet), do your keyword research targeting long tail queries . This means searches which have 3 or more keywords inside them. For example: The keywords womens shoes are searched for tens of thousands of times each month. This means that if you rank at the top of results for them, you can make a significant amount of money! But for broad searches like this one, the competitiveness is huge. Instead, go for long tail searches like: womens shoes for achilles tendonitis – there are about two hundred monthly searches done, but it’s much easier to rank for them. By looking at forums, Facebook groups and talking to your customers discover what they could be searching for. What problems ail them, what wishes they have. Content In section 4, we touched upon the topic of benefits of your product or service. Combined with your selected keywords, write your website copy clearly stating the benefits. And remember to engage your audience! Back to your purpose, remember the example with the architect? Compare this message (imagine it on the homepage of their website): We are an award-winning architectural practice working on architectural and urban design, interior and commercial architecture. To this one: We use innovative technology to create energy-efficient buildings that achieve targets such as net zero energy and deep energy retrofit to reduce construction time, cost and environmental impact. In fact, a local search for architects will turn up results which are nearly all generic, like the first example above. Almost every studio says they won awards or honorable mentions in competitions. And that they offer services for any type of building imaginable. There is no differentiation here, no one stands out. But the second example is highly focused on a very specific market segment. Add some emotion to that copy – for example, “better buildings for a better world” – and there you have it. Broadly speaking, there are two types of pages/content on any given website: Offers Articles The first ones are for your services – a separate page for each service that you offer. The second ones, articles, serve to spark interest and build trust with your audience. That’s content marketing: giving useful information for free . This positions you as an authority within your industry and you are building trust because you are not shoving your product down your users’ throats by repeating “buy, buy!”. Rather, you are giving valuable, preferably actionable information for free. If it’s top quality content, you will get a lot of exposure for free, which translates to increased website traffic and more leads and customers. Great content gets shared and linked to naturally. Whether it’s a service/product offer page or an article, keep in mind at all times that your website’s content—text, images, downloadable materials, design—should reflect your purpose coupled with your users’ needs. 7. Design, UI and UX Website design must be geared towards conversion. A website should look beautiful, but above all, must be easy to use and made to convert visitors into customers. Finally, we have arrived at the visual part! This is where most people start their website building process, which is wrong . If you went through all the previous steps, you will start to see that the surface layer, the outer skin of your website, rightfully comes last! A website should be: 1. Functioning 2. Useful 3. Usable 4. Converting 5. Beautiful Functioning The first one is a no-brainer: if there is a missing page or a non-functioning form, the website doesn’t work. Users will leave and that’s it. That’s why each page and every functionality of your website should be tested before deployment. Useful Even if the website is really hard to use and you will curse the designer who made it, you will still stick to it. Trust me, if it’s the only website with the proper information, you will suffer through the horrific user interface just to obtain the information that you need! Usable Proper, solid code is the foundation on which you should build an intuitive user interface (UI) which will lead to a great user experience (UX) . Before going into detail, such as fonts, colours and images, start with wireframes or mockups. To build them, use a tool like Figma or WireframePro . You should test your pages for usability . This is trickier than testing the functionality: programming code either works or doesn’t. But humans are unpredictable and you never know where they’ll click. It’s better to test your website with 1 or 2 users than just launch it without testing. Converting I don’t know if this word even exists as an adjective, but let’s make it clear: Above anything else, your website should convert your visitors into customers. A design that converts is infinitely more important than a beautiful design. Now, if you can achieve both, great! But above all, concentrate on making your website visitors wanting to click that button, whether it’s to buy your product, subscribe to your newsletter or contact you for more information on your service. Beautiful This is where problems can arise. Because beauty is purely subjective. Remember this: Do not get emotionally attached to your website’s design. If you want to achieve your business goals, website properties like ease of use, clarity, high conversion rates and fast loading times should always precede aesthetics. If you can’t make it beautiful, make it simple, minimalistic. Simplicity always pays off. 8. Development The code running your website must be rock-solid. As mentioned before, the desired functionality of your website will directly influence the choice of technology needed to create it. For simpler websites, a choice like WordPress or Joomla is more than enough. Which doesn’t mean that you can’t build bigger and complex websites with these technologies. But you will need experts who know what to do when your website expands, the number of its users starts to grow and additional functionalities will be needed. In case of complex websites, it is best to have a solution architect as a member of your team. Solution architects are seasoned developers who know specifics about the technologies they’re using, but also have a broader picture of your website/web application project. They closely collaborate with the designer and web strategist. They can see technical challenges and issues that can arise later, therefore saving you time and money in the long run. 9. Performance, Conversion Optimisation and Troubleshooting On the Web, competition is just a click away. A slow-loading, badly designed or boring web page? Bounce! Always remember: Today’s Web users want everything right now. If in doubt, ask yourself how do you surf the web? When searching for something, will you: Wait for 10 seconds for a web page to load? I think you’ll agree with me when I say that most of us immediately click the back button on our browser if the loading time exceeds 3 seconds, not 10! To check the loading times of your web pages, use free tools like Google PageSpeed Insights and WebPageTest . These things are expected from a website. They are the norm, not the exception! Yet, a lot of websites still lack them. How come you don’t see them? Because the majority of websites that end up on the first page of Google’s search results have great and useful content, load quickly and are user-friendly. Want to be a part of that 1% exclusive club? Do your work properly and thoroughly and you will. First, to see if anything is wrong technically with your website, connect it with Google Search Console. It’s free and it will notify you if there is something wrong with your web pages, like loading speed, mobile rendering issues, indexing by Google’s crawler, etc. Once you’re sure that everything’s running smoothly, move on to… Conversion rate optimisation Your website is launched/redesigned, it is functioning properly and you have amazing content. Visitors start pouring in. But that doesn’t mean that you should stop. You can further improve it. How? By doing: CRO – conversion rate optimisation. This is the process of converting more visitors into leads and customers. It is done by tracking and analysing your visitors’ behaviour and then making changes to see what works even better. First, connect your website with Google Analytics, preferably through Google Tag Manager. Analyse and see what pages are performing better and why. Analytics are great if you use them in combination with a visitor-tracking tool like Hotjar. It enables you to see where visitors click and how they use your web pages. Based on these insights, you can change your design, the structure of your content, headlines, etc. And then see if [truncated] ======================================================================== # Welcome, Smart Pension - Tech Consulting and Software Engineering URL: https://q.agency/blog/welcome-smart-pension/ Meet Smart Pension, Q’s London-based fintech client, and discover how we support its growth and digital transformation in the fast-paced UK pensions industry. Welcome, Smart Pension | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Welcome, Smart Pension Welcome, Smart Pension January 29, 2019 — 1 min read Smart Pension, our new London-based fin-tech client, has been disrupting and revolutionizing the pensions industry in the UK. In 2017, it was named “Fintech Innovation of the Year” and the overall winner in the “Digital Leaders 100 Awards”, and at the European Pension Awards last year it was named “Master Trust of the Year”. We are happy to help Smart Pension grow globally in the fast-paced environment. Check our Case Study . Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 29, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 29, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # We're building our new offices — grand opening March 2019 - Tech Consulting and Software Engineering URL: https://q.agency/blog/were-building-our-new-offices-grand-opening-march-2019/ Q is building a new 1,200 sqm HQ in central Zagreb, designed with modern workspaces, playrooms, relax zones, and green terraces. We're building our new offices — grand opening March 2019 | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > We’re building our new offices — grand opening March 2019 We’re building our new offices — grand opening March 2019 October 30, 2018 — 1 min read Great ideas need great space — and that’s why we’re building our new HQ. With over 1200 sqm of oice space, playrooms, kitchen, relax zones, and green terraces in the center of Zagreb, this is going to be a new home to innovative and bespoke digital solutions. We’re already planning the grand opening party and your invitation is coming soon. In the meantime, we opened it, so check our premises in this article ! Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic October 30, 2018 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic October 30, 2018 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # We’ve Opened a London Office! - Tech Consulting and Software Engineering URL: https://q.agency/blog/weve-opened-a-london-office/ Q opens a new London office to strengthen its presence in the UK, support global clients, and expand its software development and design services. We’ve Opened a London Office! | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > We’ve Opened a London Office! We’ve Opened a London Office! November 15, 2021 — 3 min read Our Co-founder and CBO, Vedran , moved to one of the busiest cities in the world! Moreover, Q gained a new partner, director of the London oice, Jesse Belgrave . Despite the Coronavirus, technology firms in London attracted $10.5 billion in venture capital money last year, a new record for the UK and Europe. “London is the global tech capital of Europe ,” says Sadiq Khan, the Mayor of London. Needless to say, having an oice in London is a big step forward for expanding Q as it creates added value for existing clients and opens up the opportunity to v meet new clients . In addition, we are already looking for new sta in London. In recent years, we have also recorded many successful collaborations with companies based in London: The Times, Smart Pension, BBC, Uswitch , and more. These companies make up 35% of our market , and the only logical and natural step was to move us closer to them. Vedran Tolic and Jesse Belgrave Opening an oice in London is a new step forward for us to focus even more intensely on strategic projects of big brands. “London is currently our largest market , and the new oice will help us strengthen our position there. Most of our clients are innovation departments of large corporations or funded start-ups, and to work with them globally, we have to be local “, Vedran points out. “London is currently our largest market, and the new oice will help us strengthen our position there. Most of our clients are innovation departments of large corporations and funded start-ups, and to work with them globally, we have to be local.” Q in numbers The opening of the London oice is a step towards developing an oice network in a number of the world’s digital hotspots. In addition, Peakon , the leading platform for measuring employee engagement, recently included us in the top five percent of IT companies in the world. Also, we are ranked for over a year in the Top 20 Best Development Companies in the world by Clutch. We believe that these endorsements will immensely impact the growth of the London oice in the future. London makes 35% of our market We are in the top five percent of IT companies in the world for our employee satisfaction of amazing 9.0/10.0, according to Peakon We are part of the Top 20 development companies by Clutch Next steps for us With this decision, we will gain even more trust between our clients and us. Our goal is to help global brands take their digital products to a whole new level, and with the new London oice, we will further strengthen our position as a software and design agency. If you want to know more, contact us at hello@q.agency . Ana Cupic Before joining Q, she graduated from Medicine, so next to supervising all internal and external communication efforts, she comes in handy when you need medical advice or someone to explain your lab results! GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 15, 2021 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 15, 2021 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # What Happens When Media Tech Is Done Right? - Tech Consulting and Software Engineering URL: https://q.agency/blog/what-happens-when-media-tech-is-done-right/ Check out what happens when media tech is done right based on our real projects and long-lasting partners from across the world! What Happens When Media Tech Is Done Right? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > What Happens When Media Tech Is Done Right? What Happens When Media Tech Is Done Right? May 18, 2025 — 3 min read The publishing world has changed more in the last decade than perhaps in the century before it. Print revenue continues to drop, while digital-first players battle for fleeting reader attention and advertising budgets. In the middle of this evolution, one thing stands out. Technology isn’t just a support function. It’s the backbone of survival. How to get media tech done right, based on our real-world examples ? Check out right here in this article. At Q, we’ve seen this firsthand. And not just in code, but in conversations with clients trying to navigate declining trust, changing consumption habits, and the harsh economics of digital media. So here’s what we’ve learned from working with some of the UK’s biggest names in publishing and how those lessons can be applied across the industry. Case 1: From Print Legacy to Lifestyle Brand – The Times Travel When The Times launched a digital travel vertical, it wasn’t just chasing clicks. It was crafting a new monetization path—turning readers into travellers and building a bridge between editorial credibility and commercial content. By merging sleek UX, SEO best practices, and robust backend infrastructure, we helped NewsUK achieve a 15% revenue increase from this new arm. But the deeper takeaway? Editorial-led commerce isn’t a side hustle anymore—it’s a core business model. Case study: Times Travel Case 2: The Sun’s Secret Weapon? Speed. In the attention economy, milliseconds matter. The Sun, reaching 30+ million monthly users, knew that platform performance was inseparable from audience retention. Together, we built and continuously improved a high-performance publishing engine—balancing complexity with speed. The insight here: A sluggish CMS or publishing workflow isn’t just annoying — it’s a traffic killer. Case study: The Sun Case 3: When Public Health Meets Public Platforms – BBC Pandemic Pre-COVID, few imagined that a mobile app could meaningfully simulate pandemic spread. But that’s exactly what we built with Big Motive and the BBC. Over 100,000 users participated in what became the UK’s #1 medical app at the time. This wasn’t just tech for tech’s sake – it was about building public trust through responsible data design (anonymity, access control, etc.). For publishers considering citizen science or data-led storytelling, the lesson is clear: tech ethics matter. Case study: BBC Pandemic Case 4: Waterbear – Where Storytelling Sparks Action For Waterbear , impact wasn’t measured in page views, but in actions taken. What we did was making their discovery experience and user content personalisation much smoother. This includes both their documentaries and the core of Waterbear’s mission — environmental protection. So what’s the key takeaway? Today’s users don’t just consume content, they want to do something with it. Publishers who bake in purpose, not just personalisation, will build deeper loyalty. Case study: Waterbear The Bigger Picture If you’re in publishing today, you’re not just in media – you’re in product, community, and experience. The difference between success and stagnation often lies in the invisible layer between the content and the user: the technology. And this is how the media tech is done right. But that layer isn’t one-size-fits-all. That’s why we believe in custom solutions, grounded in business goals, and flexible enough to adapt as those goals evolve. Curious how these strategies could apply to your platform? Let’s chat: Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 18, 2025 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 18, 2025 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # GraphQL - Making Queries Easier Since 2015 - Tech Consulting and Software Engineering URL: https://q.agency/blog/what-is-graphql/ Learn how GraphQL simplifies API queries, giving clients flexible data fetching while avoiding over-fetching and under-fetching. GraphQL - Making Queries Easier Since 2015 | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > GraphQL – Making Queries Easier Since 2015 GraphQL – Making Queries Easier Since 2015 September 24, 2020 — 7 min read GraphQL is a query language for APIs and a runtime environment for executing the queries. Originally launched by Facebook in 2012, graphql.org has been an open-source project and an alternative to RESTful Web Services since 2015. GraphQL is primarily a flexible query language. This can also be seen on the oicial GraphQL website , where the title is “A query language for your API”. This hits the core of GraphQL quite well because the client-side data needs are in the foreground, i.e. the ability to query the required data for clients in a simple and flexible way. An exciting point here is certainly the flexibility that the client gains . This can easily and precisely define which data (including relations) it needs from the server. GraphQL therefore enables a very client-oriented or use case-oriented view. With a request, the client can load exactly the data that it needs for a use case (no under fetching or over fetching). When implementing an API of an existing web or mobile application, REST API is usually used. If we were to implement the API using the existing REST API, we had to create a new API at that time whenever we needed any functionality on the client-side. For example, suppose your application has a model called Account and an endpoint called / accounts. GET /accounts {   "accounts": [     {       "id": "1",       "username": "john",       "email": "john.wick@q.agency",       "friends": [         "2",         "3"       ],       "first_name": "John",       "last_name": "Wick"     },     {       "id": "2",       "username": "max",       "email": "max.payne@q.agency",       "friends": [         "1",         "4"       ],       "first_name": "Max",       "last_name": "Payne"     }   ] } If you want to get the information of an account with a specific id, you would do the following: GET /accounts/1 {   "account": {     "id": "1",     "username": "john",     "email": "john.wick@q.agency",     "friends": [       "2",       "3"     ],     "first_name": "John",     "last_name": "Wick"   } } If you look at the above data, the ids of your friends are put in the field called friends. "friends": [     "2",     "3"   ] Following this list, if you want to get a list of your friends’ accounts, you need to create an API like this. GET / accounts / 1 /? Include_friend_details = username, first_name Or, you could do it like this GET / accounts_with_friend_details / 1 If you proceed in this way, and if the size of the application increases later, there will really be many, many endpoints. Of course, if the documentation is well made, maintenance will not be a major problem, but is there a simpler way? If we make a query on the client-side and send it to the server as follows, wouldn’t it be nice to return the result as something like this? Query query {     account(id: "1") {         username         email         firstName         lastName         friends {             firstName             username         }     } } Result {     "data": {       "account": {         "username": "john",         "email": "john.wick@q.agency",         "firstName": "John",         "lastName": "Wick",         "friends": [           {             "firstName": "Winston",             "username": "winston"           },           {             "firstName": "Marcus",             "username": "marcus"           }         ]       }     }   } Wouldn’t it be really cool if we made a query as neat as this and sent it to the server, and let the server take care of it and return the data in a given format? You don’t have to worry about over fetching or under etching because only the necessary data is fetched through the query. What you just saw is GraphQL. As you’ve seen, GraphQL embraces declarative data fetching with its queries. The client selects data along with its entities with fields across relationships in one query request. GraphQL decides which fields are needed for its UI, and it almost acts as UI-driven data fetching. There is no over fetching in GraphQL. A mobile client usually over fetches data when there is an identical API as the web client with a RESTful API. With GraphQL, the mobile client can choose a dierent set of fields, so it can fetch only the information needed for what’s on screen. Schema Definition Language (SDL) The GraphQL schema is the core of any GraphQL project. Nested in a GraphQL server, it defines every functionality available for the GraphQL client. The most basic element of each schema is a type which allows: Establishing relations between dierent schema elements, Defining allowed GraphQL operations to be performed on the server and more. To make it easier to understand the operation that a server can perform, GraphQL defines a universal schema syntax known as Schema Definition Language (SDL). The most basic elements of a GraphQL schema are object types. They represent an object you can fetch from your GraphQL server with available fields, i.e.: type Book {     title: String     Author: Author  }    type Author {     name: String     books: [Book]  } Query is a basic fetch operation in GraphQL to request data from the GraphQL server type Query{     getBooks: [Book]     getAuthors: [Author] } Mutation is one of the basic GraphQL operations allowing you to manipulate the data (create, modify or delete): type Mutation {     addBook(title: String, author: String) : Book  } GraphQL vs REST For REST services, the server decides which data is returned. With GraphQL, the client decides which data is desired and only returns what we asked. The diagram clearly defines which types can be queried and how they are structured. REST example – several queries are necessary: query customers and get response from server query friends and get a response from the server query family and get response from server GraphQL example – one query is enough. Now here is the real deal: GraphQL was created to make smart queries by requesting the exact data you need. This is in direct contrast to REST, where you are compelled to accept any data that is handed over to you. The benefits of using GraphQL for queries are listed below: Able to request all types of data. Can obtain cumulative data from multiple sources. Can request selective and specific data from an API’s endpoint. GraphQL and REST Let’s say you have developed an app that still relies on RESTful Web Services. How diicult would it be to convert to GraphQL – is it even practical? I believe that RESTful Web Services and GraphQL can complement each other well. GraphQL can be used as a gateway to give the client a unified view of the data. The GraphQL gateway would then not load the data itself (e.g. from a database), but call the existing REST endpoints and act as an aggregation point. This would provide a client with the flexibility of GraphQL and still leave the actual services as RESTful services. This procedure can be particularly useful for microservice architectures. With a new project, you can of course consider using GraphQL alone. In this case, I would make the decision based on the specific problem. Solving every problem with GraphQL blindly is not the right approach. GraphQL is (not) a replacement for REST GraphQL isn’t perfect. For example, modeling your data in a graph structure is a natural fit if you’re already storing it as a graph, as Facebook does, but much less so if you’re storing it in a table. That’s not to say GraphQL can’t be used by relational systems – it can – but it may take some additional work. However, GraphQL oers some clear advantages over REST, and in fact, we have only highlighted the most significant ones here. GraphQL APIs can be an exciting new technology, but it’s important to understand the tradeos before making such architectural decisions. Some APIs such as those with very few entities and relationships across entities like analytics APIs may not be suited for GraphQL. Whereas applications with many dierent domain objects like e-commerce where you have items, users, orders, payments, and so on may be able to leverage GraphQL much more. Kristijan Jezidzic PHP Developer at Q agency. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 24, 2020 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 24, 2020 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # What Is “Have I Been Pwned” and How to Use It Inside Symfony URL: https://q.agency/blog/what-is-have-i-been-pwned-and-how-to-use-it-inside-symfony/ Dive into the largest public website that tracks all compromised data around the world. Also, find out how you can use this to your benefit and keep Symfony apps safe. What Is “Have I Been Pwned” and How to Use It Inside Symfony | AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > What Is “Have I Been Pwned” and How to Use It Inside Symfony What Is “Have I Been Pwned” and How to Use It Inside Symfony January 16, 2023 — 5 min read In recent years, we are witnessing that security is becoming an increasingly hot topic within the IT community. This is also logical because, with the growth of the complete online world, there are increasing challenges in the direction of user protection. Have I Been Pwned As things currently stand, losing data seems inevitable to some extent, and no matter how many service providers assure us of the security of their systems, we practically constantly bear some risk through the trust we give them through our usage. Fortunately for us, or unfortunately, there is a quick way to ensure that our account has remained secure at a site. Have i been pwned is a public free website that provides insight into whether your email address appeared in some stolen database or any other data leaks. When a leak happens, Have I Been Pwned (HIBP) quickly detects it and copies the data into its server. No worries, only the account’s email address and the website on which the data associated with the address has been stolen are saved on their server. HIBP doesn’t back up any other available information. How is data collected? A major source of information are public websites intended for sharing content. These sites are ideal for hackers due to their ability to share information anonymously and may be the first location where stolen data is published. One of the popular places where black hat guys (hackers) post stolen data is the site Pastebin . With the help of special Twitter accounts that monitor websites with the same purpose as Pastebin and then post potentially stolen data, HIBP has developed an early detection system and it takes approximately 40 seconds for newly acquired data to be detected and saved. Speed like that is necessary because files with such content disappear quickly or are removed by the usage policy. Needless to say, HIBP collects and obtains data from various other sources as well. In addition, a subsequent verification of legitimacy is carried out through several possible actions The attacked organization confirmed that it was a victim of the attack Attackers publicly boast or expose system security flaws Data is structured as expected If HIBP still hasn’t won your trust , perhaps the following information can be helpful. HIBP cooperates and provides its services completely free, with, currently 34 governments worldwide. I’ll just mention a couple: Canada, Norway, the U.K., New Zealand, Australia, Israel, etc. Pwned Passwords In addition to the email search function, Have I Been Pwned offers, as part of this blog, one important service. The creator of HIBP decided to launch Pwned passwords which are the world’s largest freely available and publicly accessible database of cracked passwords. Namely, whenever a new password is obtained from a breach or data leak. That password is saved in a special database containing only passwords. Passwords are not backed up in the plain text, as this would make things easier for potential hacker usage. Instead, they are passed through the SHA-1 algorithm and the result is what is saved in the database. The SHA-1 algorithm was used due to the fact that the original text cannot be retrieved from it. When verifying the safety of a particular password (through a web search or making an API call), the system works in such a way that the submitted password is hashed and then the obtained hash is searched through the database. When, at the end of 2021 two leading agencies, the FBI and NCA, decided to cooperate . 225 million of new cracked passwords were injected into the system and that pushed the overall number over 847 million. Symfony integration After all the things that have been presented so far, I hope you feel the same way as me. How awesome it would be if we could use HIBP services in our Symfony app. Since we need to purchase an API key for other interesting services, and the only free one is searching by range , I will show how to search through the pwned passwords database and check whether the password is compromised or not. The API works in such a way that the first 5 digits of the hashed password are submitted. Response returns a suffix list of all passwords whose hashes starts with the same first 5 characters as the submitted hash. The implementation process Here is the implementation of the service method which receives the password parameter in plain text. First, we create a hash out of the password and divide it into two parts, the first five characters we use in sending the request. The rest (suffix) will later be compared to all the suffixes which have been returned in the response. If we find our suffix in the list of all returned, this means that such a password is unsafe to use. Implementation: client = $client; } public function isPasswordSafe(string $password): bool { $passwordHashed = sha1($password); $firstFiveChars = substr($passwordHashed, 0, 5); $suffix = strtoupper(substr($passwordHashed, 5)); $url = 'https://api.pwnedpasswords.com/range/' .$firstFiveChars; $response = $this->client->request('GET', $url); $suffixes = array_map(function ($entry) { return substr($entry, 0, strpos($entry, ':')); }, preg_split('/rn/', $response->getContent())); if (in_array($suffix, $suffixes, true)) { return false; } return true; } } You can now use this service to protect the user password before saving data in the database. But, there is no need to reinvent the wheel because Symfony has integrated it as simply as possible. All we have to do is include the Symfony validation component in our project. We do that with validation: composer require symfony/validator After that, add the NotCompromisedPassword constraint to an entity property and the Symfony validation component will make sure that this password is not compromised. Implementation: // src/Entity/User.php namespace AppEntity; use SymfonyComponentValidatorConstraints as Assert; class User { #[AssertNotCompromisedPassword] protected $rawPassword; } Our assertion can be customized, with the “threshold” option, you can set a value that defines how many times the password had to be leaked so that the validator characterizes it as compromised. By default, the threshold is set to 1. Default error message can also be customized with the “message” option. Implementation: #[AssertNotCompromisedPassword(message: 'Define custom error message', threshold: 5)] When developing and playing locally, if the assert is giving you too much bather. Simply turn it off by adding this to your framework configuration. Configuration: # config/packages/dev/framework.yaml framework: validation: not_compromised_password: false Conclusion: How to create a safe password We have shown that there are free tools available to help you know if your account has been compromised and on which page that happened. We’ve shown ways of how you can protect your app users from the use of unsafe passwords and how to implement these checks to perform in both PHP and Symfony projects. It is also commendable to see the involvement of state institutions in taking part in data protection. The question remains how to create a secure password . To break the myth a good example is the frequently used “password”, by adding special characters and numbers we get “pa$$w0Rd” which at first, looks much more secure and harder to crack, but a quick check reveals that this password has already been used somewhere and should never be used. This is just one example, of when a password seems safe to us, but is actually ubiquitous among other users and what’s worse, is found in various password databases. One example of how to make a hard code password yourself is to take a song you love and make it a password. For example, take the first letters of the song name and add some special characters to it. Then add the artist’s abbreviations and sugarcoat it all with the length of the song or date of issue. For instance, make a password such as this “sya@wk2015-03-10” from the song Wiz Khalifa – See You Again . Marko Car Marko is a backend Symfony developer who works on various projects within Q. When he gets the chance, he likes developing his skills even further, and currently holds the Zend PHP Engineering Certificate as well as the AWS Certified Cloud Practitioner Certificate. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 16, 2023 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 16, 2023 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # What It Means to Be a Business Analyst in the IT World - Tech Consulting and Software Engineering URL: https://q.agency/blog/what-it-means-to-be-a-business-analyst-in-the-it-world/ To be a non-technical guy (business analyst) in the developer's world is one of the hardest things to encounter. Or, is it? What It Means to Be a Business Analyst in the IT World | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > What It Means to Be a Business Analyst in the IT World What It Means to Be a Business Analyst in the IT World November 30, 2022 — 7 min read Being a Business Analyst for most of my professional career, I had interaction with developers of different profiles. From the collaboration standpoint, the overall mutual experience and the way we worked together are positive. Even though it happens pretty often that we have different perspectives, that doesn’t lead us to a loss of trust and connection that is crucial in mutual work. This blog intends to describe how this collaboration usually looks like and to present to developers the approach and way of work from the BA angle. The post will be divided into three main chapters: Ideal BA – developer relationship – this is how things between us would work in an ideal world from both perspectives, what both roles would like another side to be ( it is not something you can find in official documents, articles, tutorials, and other relevant documentation, it is something we know, but do not say to each other) Real-life BA – developer relationship – chapter based on my previous career experience, our real challenges which can set us apart or bring us closer than we both could imagine Conclusion: BA – developer relationship improvements – to avoid the terms “bugs” or “corrections”, I’ll use my favorite word in such cases (you’ll see that in my user stories) – improvements. In other words, the survival manual Ideal BA – developer relationship As an intro, in case you need it if you are not sure what a BA role is, check out this great blog written by my colleague Maja Kostić . Basically, a BA is supposed to be a central point where stakeholders’ requirements are transformed into technical implementation . On the other hand, it requires constant interaction with all relevant parties within the project – stakeholders, PMs, POs, designers, QAs, and developers. All of them are equally important for successful project implementation, but let’s focus here only on BA <-> developer relationship as cooperation between those roles is usually the crucial one, at least from my perspective. Let’s imagine the following situation – what we expect from each other in an ideal world with super nice stakeholders and projects with no sudden scope changes. I would say that the ideal BA from a developer’s point of view would be the person with all of these characteristics: Writes flawless user stories, covering all edge cases which are briefly explained through AC (Acceptance criteria) At the same time, doesn’t write much AC as it can be too much text to read Finds no bugs during the occasional test because there are no errors in the code Has immediate answers and provides feedback as soon as requested In cases of different possible approaches, agrees with the developer unconditionally When solutions can require either 2h or 5MD, chooses the first option Understands what developers are talking about all the time Doesn’t ask about task status unless it is finished, tested, and confirmed Doesn’t question estimations and doesn’t expect that estimations will reflect actual time spent on specific tasks Developers , would you agree? If I were you, I know I would. On the other hand, from the BAs (or mine, at least) perspective, the perfect developer would have the following qualifications: Reads user stories/acceptance criteria before sprint planning and is prepared for the following sprint Understands everything on sprint planning, no questions asked No questions were asked during the sprint since everything was clear on planning, right? If there are discussions required, they are only related to ones to which I ( BA ) have an immediate response Communicates in an understandable manner if there is some tech issue with a task/feature Proposes alternative solutions on their own Produces codes without bugs If there are bugs found (they should not, because of the previous point), they do not disrupt original estimations Provides exact estimates which reflect actual state and all tickets are completed by the end of the sprint From my point of view, this is the perfect acceptance criteria for developers . Since those 2 worlds cannot function in such a way, let’s see what real-life situations bring us and what obstacles can be found in our everyday work. Let’s analyze chapter 2. Real BA – developer relationship OK, by coming this far, we have concluded that the above-mentioned utopia does not exist. What are the reasons? What are the differences and challenges we both need to overcome to get as close as we can to an ideal situation? First thing I would emphasize as a difference is our mindset . BAs need to cover a wide area of work, starting from understanding business needs and transforming them to functional requirements, taking care that the whole process makes sense and it can be implemented within a given deadline whereas developers focus more on specific tasks, how to approach them, implementation process and actions they need to undertake in order to meet criteria for specific requirement. Why is important to communicate Next thing – communication . Even though I didn’t put it in the first place, I consider it the most important thing. Many things in the process can go wrong from both sides, so BA and developer roles need to be on the same page as much as possible. BAs are used to everyday communication with everyone whereas developers do not need to communicate so much, they have code that communicates instead of them. However, there are many situations when issues of any kind can appear, when the scope or expectation is suddenly changed, when an estimate is not accurate, when user story misses some AC, etc. Therefore, it is essential to establish communication as soon as possible as it is the fastest way of handling even the most difficult problems. Dear developers, please do not hesitate to communicate all of the issues you run into where you don’t know how to proceed, it is our job to deal with it, either by ourselves or by communicating further with other relevant parties. Teamwork is the best work One more thing occurred to me while I was writing this – team members get along . Based on my experience, the beginning of each project is the hardest part. Pretty clever, right? It means that all team members have their backgrounds, previous projects, etc. but at some point, the team needs to “click”. It is easier to say than to reach it, but this is the point when the team members get to know each other, BA knows what to expect from developers and developers know what is expected of them and what is the actual BA role in the overall process. Even if something goes wrong (and it will don’t worry), both roles know that they can rely on one another. That being said, we can go to the improvements section. I’ll stress the main points drawn from all of these facts I mentioned before and summarize them. Conclusion: BA – developer relationship improvements There is no Q project without a BA and developer, that is it, deal with it. We have to work together unless you want to cover my responsibilities to discuss and write all day long. Besides giving tasks and asking for estimates and statuses, BAs are a central place where all project-relevant information can be found. If not, well, it is again BAs responsibility, not yours 🙂 If you ask me, I really enjoy working with developers , since you transform my words into functionality, it takes much more than coding, it is understanding what I meant/wrote and putting it as a functional process. I consider it like some kind of magic. In conclusion, I’ll highlight the following keywords – mutual understanding, communication, cooperation, and coordination . These are essentials and it goes in both directions, from BA to dev and vice versa. We are not here to compete over who has the higher and more important role in the process, but to work together, each of us in our areas of expertise and that is the ultimate way of reaching the goal – successful project completion . ivukman Became a Business analyst by accident almost 13 years ago, and now it is too late to change my profession. Joined the BA department in Q agency. I started working as a BA on bank projects and continued on other projects unrelated to the banking system. In my free time, I use BA skills to define user stories for my kids, but they seem not to follow any instructions mentioned in the acceptance criteria. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 30, 2022 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 30, 2022 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # What Our Core Team Learned on Their Trip to Egypt - Tech Consulting and Software Engineering URL: https://q.agency/blog/what-our-core-team-learned-on-their-trip-to-egypt/ Core team trip to Egypt What Our Core Team Learned on Their Trip to Egypt | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > What Our Core Team Learned on Their Trip to Egypt What Our Core Team Learned on Their Trip to Egypt June 30, 2022 — 5 min read By far the most important event for the company in the last month was the trip to Egypt . Q’s Core Team , together with their families went on a 7-day trip to the land of pharaohs and the remarkable ancient civilization that laid the foundations for today’s modern-day society. That was one of the key reasons we decided to go to Egypt — we wanted to lay new foundations for the further growth of our company, as well as develop new strategies that would contribute to its growth. Core Team with their families Why Egypt? Whenever we get away from everyday life, we start thinking about the company from a different perspective. A different environment helps us all broaden our horizons and see the big picture . There are three key reasons why we chose Egypt as our destination. First, 2021 was the year when our Core Team worked hard and sacrificed a lot, but also a very successful year for our company, so we wanted to celebrate all those fantastic results by going somewhere where most of them haven’t been yet. In front of the legendary pyramids Secondly, it was essential to have time for ourselves to reflect and dedicate ourselves to important company-related strategic topics . So the time spent in Egypt was devoted to conversations , workshops , and reflection with the goal of creating plans for the future and also understanding how each Core Team member sees the future of Q. The third reason for going to Egypt was for people to connect more and for their families to get to know each other. A crucial thing to us is that Qumans have the feeling that they work at Q, but also that Q is something more than just a job. In this company, we all share a great deal of common values, so we wanted to strengthen these values on the journey and become truly one team . Grand Makadi Resort by night Workshop in progress Core Team’s 7 days in Egypt The 7-day adventure started by leaving Zagreb from where we flew to Egypt, precisely Hurghada. This is a beach resort town spread along 40 kilometers of coast of the Red Sea, full of beaches, hotels, and people that put a smile on your face the second you see them. On the day of arrival, May 15th, we had an All Egypt Team meeting, where we welcomed the group, and then had a welcome dinner with Ahmed, a great friend of our CEO , Filip Ljubić . During dinner he told us all about the ancient and modern history of Egypt as well as stories about the recent revolution and what it’s like to live in this sun-kissed country. Grand Makadi Resort by night On the second and third day of our stay, we had workshops with the company’s official HR coach , Ivona Zgrabljic , who, as the founder of Edukator ID , has been our motivational leader and educator for years now. In these two workshops, we worked on recognizing our personality traits as managers to better understand our own and our teammates’ behavior and consequently, know when to adjust our communication. This helped us get to know ourselves better with the help of methods and tools used during those two days. Arabic nights are something special After the workshops, we got to visit the beach, explore the resort, and visit Hurghada and its marina the next day. May 18th was the day we traveled to Cairo and its surroundings. After a six-hour night bus trip from our resort to the Egyptian capital, we visited some of the world’s most iconic and recognizable places, such as the Pyramids of Giza and the Sphinx , and also went on the formidable Nile river cruise . On the other hand, Cairo has delighted us with the warmth and hospitality of its inhabitants, with its city center full of oriental scents and vibrant life that make it definitely worth visiting at least once in your lifetime. Cruising down the mighty Nile The following two days, we held several strategic workshops, where we worked on how to make Q an even better workplace for Qumans – how to achieve even greater synergy and satisfaction of people in the workplace, which is already high, as shown by the results in our monthly Peakon surveys. 10 strategic initiatives came out of these two workshops that we’re sure will bring Q to a much higher level by the end of this year. One thing is also sure: we’ll continue to be a people-oriented company with top-level projects and some of the most highly satisfied clients and employees in the world. Besides the workshops, we went on an underwater diving feat and had the honor of seeing the majestic marine life off the Red Sea coast. We also had a desert safari tour where we cruised around the desert and experienced how scorching it can get in a desert. Not to mention camel riding, dune bashing, and riding on quads which certainly brought everyone an unforgettable experience. Conclusion There are always fantastic ideas inside our heads that don’t come out until we leave our daily routine and ‘run away’ for a few days into a new environment. This trip inspired the entire Core Team to stop, reflect, and think through what could be the best strategic moves that could benefit the company in the future, with its people, Qumans, first in mind. We covered important strategic topics in a series of workshops that ended well beyond everyone’s expectations. A big thank you goes to all of you for participating in the workshops and for being present, giving your two cents (and more than that) to help build an even stronger company than what it is today. Paula Kovacevic Paula is the Head of Operations, working on process improvement and developing the company's quality level. She is a Certified Internal Auditor for Quality Management and soon-to-be a Six Sigma Green Belt Master. She strives to keep processes simple and clients happy. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 30, 2022 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 30, 2022 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Who Exactly Is a Business Analyst? - Tech Consulting and Software Engineering URL: https://q.agency/blog/who-exactly-is-a-business-analyst/ Learn what a Business Analyst does, how the role differs from other project roles, and why business analysis is essential for successful digital products. Who Exactly Is a Business Analyst? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Who Exactly Is a Business Analyst? Who Exactly Is a Business Analyst? July 1, 2021 — 8 min read If you are working as a business analyst, or any other role (tech or non-tech), there is a chance you’ve heard this question before – what exactly do business analysts do? The easiest explanation would be a person in charge of identifying and helping solve a business problem by using information technologies. TL;DR this or summary on BA insights: Discovering and analyzing information to identify core problems Using design scope framework when determining features Simplifies the level of data and details to be written Bond and mutual language for both key stakeholders and the development team Oicial documentation delivery including validation and update Defining fundamentals on change management valuable for product lifecycle Harder, better, faster, stronger analogy Business Analyst role – what do experts say? Of course, depending on the organization’s specialties and maturity, you can see alternative names for a Business analyst role such as Data analyst, Process analyst, Application analyst, etc. This happens mostly because organizations get caught in rapid industry changes for which they need to act fast and include the right profile roles. Often they adjust those roles to their business needs; however, the main goal is to design and deliver products while co-existing with traditional roles in a fast-growing ICT society. That’s where a Business Analyst jumps into a workplace environment. 🙂 Oicially, the International Institute of Business Analysis ( IIBA ) and The Business Analysis Body of Knowledge ( BABOK ) Guide defines a business analyst as: Business analysts are responsible for discovering, synthesizing, and analyzing information from a variety of sources within an enterprise, including tools, processes, documentation, and stakeholders. The business analyst is responsible for eliciting the actual needs of stakeholders — which frequently involves investigating and clarifying their expressed desires — to determine underlying issues and causes. Business analysts play a role in aligning the designed and delivered solutions with the needs of stakeholders. BABOK stands as one of the business analyst frameworks explaining techniques and competencies relevant to perform BA tasks. It’s good to point out that the European ICT professional community back in 2005. started to define the e-Competence framework based on business areas, level of expertise, and competencies by particular ICT role. By e-CF Business Analysts engagement is clarified in areas PLAN-ENABLE-MANAGE while his core mission is: Analyses the information and the processes needed to support business plans. Formulates functional and non-functional requirements of the business organization and advises on the lifecycle of the information solutions. Evaluates the impact in terms of change management. Further reading can help you precisely determine the BA scope of work, specialties, and value to both product and team. Business analyst vs. other project roles – overlapping responsibilities? Let’s face it, often does the BA role get misunderstood with the role of a Project manager or Product owner. Some organizations even merge these roles into one which can aect the value and quality of work done. Of course, it depends on the organization essence and the type of project we are talking about: Discretionary vs. mandatory Single-handover vs. multiple-handover Internal vs. customer project etc. A typology of projects is well explained in Oliver’s F.Lehmann work: Project Business Management . It helps to better understand projects’ similarities and dierences that can influence dynamics of work and roles needed leading to success and failure scenarios. Example of the dierences between the two types of projects Source: Oliver F.Lehmann – An introduction to a typology of projects To distinguish BA from other roles it’s important to understand that the business analyst role is to focus on product value to be shipped. That is achieved by defining best -case and edgy cases , acceptance criteria , and all relevant assumptions and constraints. A business analyst works closely with the following roles: Project Manager Product Owner System/Infrastructure Architects Development team (consisted of developers, designers, and QA) Subject matter experts. They make a solution team that aims to the same goal – deliver product and project on time. Steven P.Blais explained each of these roles well in his work Business Analysis – Best practices for success . Main responsibilities and work per project roles are wrapped up in the following image. It’s important to notice that the synergy of all included parties is crucial for success, no matter what their level of knowledge , expertise , and experience is. Once that is achieved, the solution team can work in harmony and make results. Document first in, develop, validate and update doc last Oicial technical documentation per project or product is a topic for itself. There are thousands of articles and studies questioning, standardizing, and improving this process however, business analysts ‘ responsibility is to provide the written form of inputs valuable for all parties included. Form type isn’t really important as much as content and quality matter. This is especially sensitive in the design/analysis phase where a business analyst needs to act fast and find mutual language for both key stakeholders and the development team. The diagram below sums up sources of data business analysts use while writing and updating oicial documentation. Main tasks revolve around: identifying main priorities for process improvements interpret representation data from key stakeholders categorize and analyze gathered information supporting diversity over communication platforms and dev tools (often chat transcripts or emails are hidden gems of useful data) provide the written version of a solution according to strategy understandable for everyone. Nevertheless, as the analysis phase is important, there comes development, testing, and that magical production period when everyone feels relief and moves on to new upgrades. That’s when business analysts should validate and update oicial documentation with the alignment of all included parties. This is especially important for: production maintenance change management lifecycle or any further action over the project or product. Unfortunately, it is also something that lots of completed projects end up without and it strongly aects the quality and speed of future work. When creating documentation business analysts should keep in mind to cover solution scope by features and key activities, represented as follows. Finally, as an intro in writing eective technical documentation , a warm recommendation for an oldie but goldie Alistair Cockburn: Writing Eective Use Cases . Yes, it’s a mature book and already 21 years old but the great thing about it is that Cockburn covers briefly use cases, not using any specific framework. It explains the main goal of use cases , target audience and simplifies the level of data and details to be written. Impact of Business Analyst, in a Daft Punk way In Q BA’s daily activities revolve around: product discovery engagement product strategy process participation in ongoing projects consulting services while identifying the problem. Based on the maturity of the client’s idea and how well-defined it is there are two options: 1. Requires a smaller level of ideation and shorter definition stage – product discovery. 2. High-level ideas requiring research and defining digital product – product strategy. During both product strategy or product discovery processes, BA closely collaborates with the solution team. Q’mans noticed during project retro analysis there is an urgent need for Product Strategist roles . All together they are creating the product layout , look & feel, and a plan for later development stages. While analyzing key business objects and requirements business analysts create user stories and get highly engaged in the ideation process and validation of target groups aiming to build a product strategy. As a result, delivered documentation, estimations, and scope prioritization can be done. In ongoing projects, the business analyst gets involved in project-related ceremonies . One thing to mention here is that BA should always be passionate about his work and motivator of all activities in the project. Main project activities are: backlog refinement and specification updates during development confirmation of the scope for an upcoming sprint with the client support for both project manager and development team test scenarios and bug prioritization deliveries for change management product lifecycle To be honest, covering all the topics and responsibilities previously described can be a heavy, multifunctional everyday job. The most valuable are practical resources and ongoing projects that we carefully discuss and analyze in retrospectives. Sometimes they serve as a starting point for improvements on activities we see as pain points and spots where we can work it harder, make it better, do it faster… Yes, Daft Punk’s funky lyrics can be used as a correlation for our overall mission when building and developing products . Okay, they imply building perfect robotic models but it’s applicable for the product development also. We are all aware things get outdated, technology and processes can always improve and get innovative . That’s where we step up and try to help as much as possible. This leads us back to working it harder, better, faster analogy. 🙂 Conclusion I hope this helped you understand better BA role. Contact our sales department for any open questions, we’ll be glad to assist. Just remember – business analysts help to create alignment with all parties included and make order out of disorder. When working as BA don’t forget to be accurate, detailed, and after all – human and kind . Kindness is the key! 🙂 Maja Kostic Maja is a certified product ownership analyst (IIBA-CPOA) with multi-year experience in various industries, on both client and vendor side. Constant problem solving is a persistent incentive for her motivation, which she combines with a willingness to learn, collaborate and share knowledge. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic July 1, 2021 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic July 1, 2021 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Why a Well-Tied Partnership Is About More Than Business - Tech Consulting and Software Engineering URL: https://q.agency/blog/why-a-well-tied-partnership-is-about-more-than-business/ Learn more about how a well-tied partnership, like the one we have with Croata, is about more than business. Why a Well-Tied Partnership Is About More Than Business | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Why a Well-Tied Partnership Is About More Than Business Why a Well-Tied Partnership Is About More Than Business February 27, 2026 — 3 min read You don’t usually think of fashion and software engineering in the same sentence. But both have something in common: Precision. Structure. And the understanding that details define perception. That’s where this story begins. Shared Values Are a Strategy, Not a Slogan Strong brands, whether in tech, design, or craftsmanship, tend to share a few common traits: Commitment to quality over shortcuts Long-term thinking over quick wins Attention to detail Clear identity, even when operating globally When those values align, collaboration feels natural. Not transactional. Not forced. But coherent. At Q, we think a lot about how we show up in the world, not just through the products we build, but through the ecosystem we create around us . That’s where partnerships matter . A Small Accessory with a Big Origin Story Here’s a detail many people find surprising: the modern tie originates from Croatia. In the 17th century, Croatian soldiers wore distinctive knotted neckerchiefs as part of their uniform. When they arrived in France, the style caught attention and became known as “à la Croate.” Over time, the phrase evolved into the word cravat, and eventually into what we now recognize as the modern necktie. Today, the tie is one of the most universal symbols of professionalism and formal business attire , worn in boardrooms from London to Riyadh to New York. It’s remarkable how something that began as a cultural detail became a global standard. A reminder that identity, when authentic and well-crafted, has the power to scale far beyond its origin. Why Craftsmanship Still Matters in a Digital World In a world driven by software, AI, and automation, physical craftsmanship may seem secondary. But the opposite is often true. In international business environments, especially relationship-driven markets like the Middle East, details matter: How you present yourself The thought behind a gift The story you bring with it Recently, during our engagements in Riyadh, we brought curated gift packages that included pieces from Croata , alongside selected Croatian products. What stood out wasn’t simply appreciation for the items themselves, but genuine interest in the story behind them, the heritage, the craftsmanship, the intention. It opened conversations. It created connection. It made the moment memorable. When Brands Move in the Same Direction Our collaboration with Croata happened naturally. Two brands operating in very different industries, technology and fashion, yet sharing similar principles: Respect for origin Commitment to quality International mindset Strong brand identity It’s a good reminder that partnerships don’t need to be obvious to be meaningful. Sometimes, they simply reflect a shared philosophy. And when that happens, the collaboration feels less like marketing — and more like continuity. Final Thoughts Technology can scale businesses but values scale brands. When companies with aligned standards and long-term thinking join forces, whether through code or craftsmanship, the result is something clients can genuinely feel. Because partnership is about more than business. Often, it lives in the smallest details . Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 27, 2026 — 3 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 27, 2026 — 3 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Why Early Brief Clarity Is the Shortcut to Better Project Quality and Delivery Speed - Tech Consulting and Software Engineering URL: https://q.agency/blog/why-early-brief-clarity-is-the-shortcut-to-better-project-quality-and-delivery-speed/ Learn how we improve project quality with transparent communication, expert teams and reliable delivery for your next software project Why Early Brief Clarity Is the Shortcut to Better Project Quality and Delivery Speed | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Why Early Brief Clarity Is the Shortcut to Better Project Quality and Delivery Speed Why Early Brief Clarity Is the Shortcut to Better Project Quality and Delivery Speed November 28, 2025 — 4 min read This article brings you key (usually missing) information you can add to your project brief to create clarity, raise project quality, and increase the delivery speed. “Every digital project is just a business process optimisation in its essence” – a senior colleague said to me a few years ago while we were discussing functional requirements and system infrastructure for a potential client. “Of course”, I replied, “it’s so logical that it almost doesn’t need to be mentioned”. We closed our laptop, ended the meeting, and moved on — but this “obvious point” stayed with me for some time. This slowly became a new paradigm through which I began observing upcoming projects. The X-Factor In presales, reviewing client documentation is a day-to-day job. And with the “new paradigm,” I started noticing: Clients usually focus heavily on what is in scope — tech stack expectations, integrations, phases, feature lists. And the context around the project often remains on the shelf , waiting for someone to ask. Across all the documentation I reviewed, one pattern kept appearing — the highest-quality projects have had defined context traits, and I could see it from the very first documentation review. Projects Are an Adjustable System When creating a project plan proposition, three categories are highly flexible: Team composition (subsequently budget) Scope width and depth Timeline All three can be adjusted to create a project of the “same size”. Here’s a plastic illustration: team of 5 + 20 features + 2 months team of 3 + 20 features + 3.5 months team of 5 + 10 features + 1 month So when a project brief says: “We need to launch in 3 months, and here are the 20 features,” the request seems simple — propose a plan and team to achieve that. But here’s where things become interesting and exactly where missing context starts to show. Where Lack of Context Can Be Felt As we dive deeper into a project, questions naturally emerge — the kind of questions that influence scope depth, team setup, and timelines. For example: A “generic” feature like login can take 1 day or 10 days depending on existing systems, MFA, biometrics, or integration requirements. An educational module could mean a full in-app academy with multiple course; or a simple tap-to-learn feature. If an admin dashboard isn’t in scope – how will engagement, usage, or content performance be measured. “This is overengineering” – a reader might say. And I fully agree. Overengineering the project brief isn’t the goal. And yes, vendors should bring expertise and make suggestions in uncertain areas. So the real question becomes: What context could be shared as early as possible to increase project quality without overwhelming the documentation? If I Were Starting a Digital Project, Here’s What I’d Always Include Still looking through the “business optimisation” paradigm, here are the top 5 context elements that raise the quality of any project brief and leave space for expert suggestions (even the low-level ones!): Goals What are we truly trying to achieve? Measure of success definition (OKRs), especially the North Star “What is not measured, cannot be improved” Does user and market research exist and can it be shared Does it exist? Can it be shared? It shapes scope depth and priorities more than any feature list. Key project risks Technical, business, organisational — everything that may influence the plan. Any restrictions regarding budget and time Non-negotiables frame realistic scenarios. Of course not everyone will always have all the answers; context simply helps us deliver the best possible solution from day one. Understanding these brings a whole new perspective and creates space for us to apply our expertise in a way that raises project quality while fully addressing actual needs . What Happens When Context Is Clear Once we know what’s important, it becomes much easier to: define what “reasonable” means for each feature and refine scope depth shape the team (size, seniority) optimise the price propose the right timeline suggest optimal technical approach We can answer the deep-dive questions ourselves (because we know what’s most important) and come back with a concrete, realistic project plan instead of guesswork. And if the context is missing in the brief? No problem. We’ll address it on calls anyway. But think twice, because here’s the value you unlock by defining these upfront: Higher-quality project proposal Faster proposal delivery (meaning more time to polish tailor project plan as well) Faster project execution Higher quality project execution Clarity on what the project actually achieved In other words — the better key info you share, the more value we will create together. Feel free to reach out to us , kick-start your project, and build something impactful! Vesna Palada Imagine three circles: Clients, Sales, and Engineering. Vesna is a Presales Engineer sitting at their intersection — bridging communication gaps by 'speaking all three languages' and crafting solutions that connect ideas with possibilities. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic November 28, 2025 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic November 28, 2025 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Why Is Product Strategy the Key Step When Launching Digital Products? - Tech Consulting and Software Engineering URL: https://q.agency/blog/why-is-product-strategy-the-key-step-in-launching-successful-digital-products/ Learn why product strategy is the key step when you're launching digital products. Why Is Product Strategy the Key Step When Launching Digital Products? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Why Is Product Strategy the Key Step When Launching Digital Products? Why Is Product Strategy the Key Step When Launching Digital Products? June 16, 2021 — 5 min read You don’t have to work in the IT industry to be aware of the global digitization trends. We are living them. As users, we choose products based on how well the product answers our needs and how great the overall experience while using it is – you will most likely leave the website if it takes more than 3 seconds to open, or check mobile applications look & feel when considering a new bank. To stay competitive, companies are moving fast to launch their new digital products. However, wanting to shorten the time to market, many oversee the key step in the digital product journey prior to jumping to development – Product Strategy. I never thought about approaching it this way. – Client Feedback Product Strategy is the first step in the digital product journey and the one that will ensure their product’s success with users. It is a very creative yet structured process during which we work with clients from the idea and translate it into a viable product. If we want to compare it to building a house, the Product Strategy is creating the house’s layout, look & feel, and a plan for later development stages, so you do not waste any extra time or money in the later phases. In this blog, we’ll focus on sharing more about how Q approaches Product Strategy and why it is one of our most demanded services. Solving the right problems for the right people Product Strategy framework is nothing new in the market. However, as with everything you do, it is about how you are applying its principles to your daily work that makes a difference. One of the key elements to product strategy success is having the right team working on it. A team that understands it isn’t about focusing on what to build, but which problem to solve and for whom. It is about seeing the big picture and connecting the dots to create actionable steps relevant to this specific product. Usually, our team consists of strategists, researchers, designers, business analysts, and solution architects. A team with versatile knowledge, experiences, and backgrounds allows us to look at the problem from different sides, and deliver holistic, future-proof digital product strategy and build a great product. Building a holistic digital product strategy Step 1 – Setting the right foundation Shifting from digital features to human needs is the only way to make innovative products loved by the users. This is why user research is usually the first stage of every Product Strategy project. User research helps the shift from tech-focused products to those that meet users’ needs and enhance user experiences. It provides the user insights that will, together with business goals, provide the basis – opportunity areas and data-backed insights – for the ideation phase that follows. During this step, our team recommends the right research method(s), conducts the research, synthesizes the findings, and presents actionable recommendations on value proposition and UX improvement to the Client. Check this blog to find full info on how we do user research. The insights we got are fantastic and are definitely making us rethink our product. We especially liked how everything was categorized per impact and complexity and backed with quotes, numbers, and actions. – Client Feedback Step 2 – Framing the problem and ideation By identifying those opportunity areas relevant for this specific product – the ones where your product will answer user needs but also differentiate you from competitors – research has provided a foundation for the ideation phase. This phase is one of the most interesting and dynamic for our Clients as it is eye-opening, creative, and full of new ideas . We will define what to do, but also what not to do, define the value proposition, measures of success, and priorities, uncover monetization areas and talk about the look and feel of the product. It was challenging, but really interesting and fun, especially brainstorming workshops – I learned a lot. If we would create another product, we would do product strategy again with you. – Client Feedback From here, we’ll set together the right approach to make the product vision (north star) a reality, in a way that will bring long-term value. Step 3 – Product validation and definition Once we have answered the what and why, we are moving to how – building the infrastructure to bring the opportunities to life. During this phase, the product is getting its shape as we are mapping out the user flows, creating wireframes and mockups, and building prototypes. It is very visual, which makes it one of the stages our Clients love the most as they are beginning to see their product come to life. At the end of this phase, the full digital product overview, including user research report, product definition through user flow and stories, solution architecture, wireframes and look & feel roadmap, and the go-to-market plan are delivered. Product Strategy is then followed by MVP design and development, leading to product launch and further product growth and scaling up. Creating a better digital product So far we have completed a number of Product Strategy projects – from improving customer experience in the company of 2000+ employees, introducing new startups and their digital products in the US or Germany markets, to repositioning existing market leaders through digital product innovation. I am really happy with the product. It is a better product now than our original idea. – Client Feedback But what makes us proud is knowing we not only helped in building successful digital products, but also that our approach is recognized by our Clients who found our thinking, guidance, and results deeply valuable for growing their business. For us, this underlines the importance of building partnerships with our clients not only by sharing our knowledge from different markets, industries, and digitization projects but also by sharing our passion for what we do. Rebeka Belavic Rebeka is Head of Product Strategy at Q agency. combines her technological superpowers with business experience to develop digital products and services. Besides holding a Masters in Engineering and MBA, she is also a passionate writer and a painter. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 16, 2021 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 16, 2021 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Why QA Is Important For Your Business’ Success - Tech Consulting and Software Engineering URL: https://q.agency/blog/why-qa-is-important-for-your-business-success/ In this article, we will dig deeper into why QA is important (very important!) for the success of your business. Why QA Is Important For Your Business’ Success | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Why QA Is Important For Your Business’ Success Why QA Is Important For Your Business’ Success April 13, 2025 — 6 min read To put it simply, quality assurance is the process of ensuring that your software product or service you develop works as it should. In order for your software to have all the boxes checked before being delivered to the end user, it must pass tests and meet quality, UX and security standards. In this article, we will dig deeper into why QA is important (very important!) for the success of your business. What is QA and What’s the Deal With It? In the world of software development, product quality is an absolute must. And to achieve this, it’s necessary to introduce a quality assurance process. What QA aims to achieve is to prevent bugs already in the first, early stages of development, and to bring your code into line with industry standards. The ultimate goal? A more reliable and functional product. We should clarify that there’s a difference between the process of software testing that focuses on finding errors in the code during development, while quality assurance is a process that is preventive in nature. QA therefore optimises development processes and procedures at the very beginning of the development process and aligns the project with the best, well-established practices. Benefits of QA in Software Development Let’s talk more about the benefits of this process and why QA is important in a way that it goes beyond just the technical aspects of software development. 1) Greatly Increased Product Quality So, what QA ensures is that the software in the making works without any errors, bugs or issues that could lead to problems with the user experience of the end user. High quality software products greatly increase user retention and loyalty to your product. Not to mention that higher quality means less chance of oftentimes expensive fixes after the final release. 2) Security Increase As we mentioned, QA tries to identify weak points in the process right from the start and ensure that the process is compliant with security standards. Why is this extremely important nowadays? Because data security is a very sensitive and important issue, especially in some industries such as healthtech or fintech. QA is a ‘dam’ of prevention in these sensitive industries where data security and user privacy are extremely important. 3) Cost Reduction If you detect errors early in the software development process, this almost always means much lower costs for fixing the errors. Because, if an error occurs at a later stage, it can be much more difficult, more complex, and therefore much more expensive to fix. QA here serves as a process that tries to bring those risks to a minimum with its proactive approach . Learn more about quality assurance as well as quality control in this article where we compared these two practices and explained how they complement each other. 4) Faster Development Along with QA tests, we also associate the concept of automated testing. This type of testing speeds up the development process and detects bugs much faster than what would be possible with manual tests. Likewise, with automated tests, there’s no room for human error. All of this leads to faster communication and feedback among everyone involved in the project, and ultimately a higher return on investment (ROI). 5) Better UX Is there such thing as mentioning the importance of user experience one too many times? No. After all, intuitive and responsive UX equals happier and more satisfied customers. In other words, this means greater loyalty to your end product and greater retention of existing users. If you have a larger base of existing users, it can indirectly mean a lower need to acquire new users. And this is another example why QA is important and where it ‘excels’, because through its practices it has the task of ensuring the best possible user experience. QA as Key Factor in your Business’ Success It builds trust Reliable software product or service? Bingo. What you get are loyal customers you’ve developed a long-term relationship with. It brings competitive advantage QA is the cornerstone of high quality products. That’s why organisations that strictly adhere to well-established quality assurance practices stand out from their competition. And this gives them a greater reputation and a much greater probability for new investments. It encourages continuous improvement With its approach to the development process, QA encourages continuous improvement. In what way exactly? By analysing existing practices and introducing new ones with the aim of increasing the quality of the end product. How to Make Sure QA Is Efficient? To make it as efficient as possible, QA needs to be integrated into every step of the software development life cycle, also known as SDLC. When talking about quality assurance, we’ll focus on these three next phases — planning, development, and testing phase . In the planning phase, the quality assurance team identifies potential risks by assessing requirements. Then comes the development phase, where QA Engineers make sure that the code complies with the highest quality standards. The last phase, a.k.a. the testing phase involves a series of tests that aim to discover all potential issues in the product before it gets the final green light to be launched to users. Automation tools like Postman or Jira , among many tools, the most commonly used ones, help with speeding up the entire process and ensure reliable and consistent results. Conclusion In short, quality assurance is a practice that in today’s world of software development helps you develop a better and more valuable product, and in the long term, increases your product and brand reputation. It does that by following its principles and taking a preventive approach, with the help of thorough testing and making sure the software meets all industry standards. Some of the most important benefits of implementing QA are higher reliability of your product, cost reduction, and better UX for your end customer. With years of experience in the QA field, our skilled QA Engineers are here to help you with best practices in every development process. If you also need a QA team for your project, feel free to contact us ! We are at your disposal. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 13, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 13, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Why the Discovery Phase in Software Development Matters More in the AI Era - Tech Consulting and Software Engineering URL: https://q.agency/blog/why-the-discovery-phase-in-software-development-matters-more-in-the-ai-era/ Learn more about the discovery phase in software development, and why it matters more than ever in the era of AI. Why the Discovery Phase in Software Development Matters More in the AI Era | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Why the Discovery Phase in Software Development Matters More in the AI Era Why the Discovery Phase in Software Development Matters More in the AI Era March 28, 2026 — 4 min read In the AI era, when we can prototype ideas faster than ever and development cycles are being compressed by automation, I’d argue that the discovery phase in software development has become even more important, not less. Speed does make execution easier, but it does not replace the need for clarity, alignment, and informed decision-making at the start of a project. Before teams build anything, they still need to understand the real problem, define priorities, and make sure the solution is worth building in the first place. Read on to see why the discovery phase in software development still sets the direction for everything that follows, especially in the times of AI. The Illusion That Planning No Longer Matters “I developed a full-blown app in four days during my coffee breaks by vibe coding.” “We reduced dev time by 40% using AI in software development.” “AI assistants are now writing nearly half (46%) of all new code.” These are the testimonials I find while peacefully scrolling LinkedIn during my morning coffee routine, wondering just how much the market is about to shift. “By 2030, 25% of all IT work will be performed by AI alone” , it interrupted. “The remaining 75% will be human-led but heavily augmented” , adds my AI agent, cutting my speculations. We’ve entered an era where the gap between conceiving an idea and implementing it has shrunk to almost nothing. “Idea and practice have never been closer” could be the motto of 2026. This leads to a logical question: If an idea can come to life this quickly, do we still need the discovery phase in software development? Is this the death of the software development planning phases? The answer is a strong no. In fact, the discovery phase is now more critical than before . To understand why, let’s step away from the screen and look at civil engineering. Robots Need Better Instructions When building a house, the ”pre-construction” phase (site plans, structural drawings, and MEP engineering) usually takes 25% to 40% of the total timeline.* This is not surprising – it takes a cross-functional brain (Architects, Engineers, Designers, Client) to ensure every detail is defined before the first brick is laid. Now, imagine if the actual physical building was done by robots. The “build” phase would shrink from months to days. Does that mean the planning phase disappears? Of course not. The planning phase would need to be even more precise. A high-speed robot needs a good plan to prevent blockers. Unlike a human contractor, it can’t scratch its head and ‘figure it out’ when it hits a pipe. What Discovery Looks Like in the AI Era At Q, we execute Discovery with an ‘AI-First’ mindset. It’s the phase where we align business KPIs with technical feasibility, ensuring that when the AI starts building, it’s following a map to success. Depending on project, we focus on three specific pillars: Strategy Discovery – Aligning product vision with market needs (the “Why” ). Product Discovery – Mapping user journeys and defining the MVP (the “What” ). Technical Discovery – Assessing architecture and tech stack feasibility (the “How” ). For a deep dive into how we structure these teams and the specific deliverables we produce, check out our guides on The Discovery Phase in Software Development and our Discovery & IT Consulting models . Winning with AIDD (AI-Driven Development) The “Idea and practice have never been closer” motto doesn’t mean eliminating planning. It actually means introducing Early Prototyping and automated work within discovery . To get the maximum ROI from AI-Driven Development, within Discovery we: Lean on specific Industry Expertise (Human-in-the-loop) Define the “North Star” (Objective-led development). Build the “Happy Path” Prototypes (Immediate validation). Set clear roadmap for AIDD (Precision execution). ROI vs Risk of Discovery in the AI era The risk of skipping the Discovery phase in software development leads to expensive, high-speed detours that end in technical debt. The reward of a focused Discovery session ensures that when the “robots” start building, they are creating a high-quality, scalable solution aligned with KPIs. Back to my morning coffee conclusions: software development planning isn’t dying. It’s finally getting the attention and time it deserves. The paradox of AI is that it requires us to slow down in planning so we can enjoy the fast ride when it kicks off . Vesna Palada Imagine three circles: Clients, Sales, and Engineering. Vesna is a Presales Engineer sitting at their intersection — bridging communication gaps by 'speaking all three languages' and crafting solutions that connect ideas with possibilities. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 28, 2026 — 4 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 28, 2026 — 4 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Why You Should Hire a DevOps Engineer to Grow Your Business - Tech Consulting and Software Engineering URL: https://q.agency/blog/why-you-should-hire-a-devops-engineer-to-grow-your-business/ DevOps Engineering is nowadays an indispensable part of the IT sector. In this article, we’ll show you why you should hire a DevOps Engineer in order for your business to grow. Why You Should Hire a DevOps Engineer to Grow Your Business | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Why You Should Hire a DevOps Engineer to Grow Your Business Why You Should Hire a DevOps Engineer to Grow Your Business February 28, 2025 — 6 min read DevOps Engineering is nowadays an indispensable part of the IT sector. This group of engineers with multiple sets of skills is crucial in transforming your software product or service into one that will stand out from your competitors. In short, DevOps involves integrating and automating software development as well as information technology operations. In this article, we’ll show you why you should hire a DevOps Engineer in order for your business to grow. Also we’ll go deeper into their skills, the tools they use, and why hiring a DevOps Engineer that comes from Q is more than a great idea, given their experience and expertise. Let’s go. What’s a DevOps Engineer anyways? The evolution of technology inevitably pushes companies towards innovation. And those who don’t keep up simply get left behind by the competition. The DevOps approach steps in here as a valuable asset in this race, but its implementation can often be challenging for some companies. Without the right expert, it’s easy to lose the sense of direction. This is where the DevOps engineer comes into play. Think of it as the invisible ‘architect’ behind the scenes, the person who knows how to break down disruptions in communication between development and operations teams. Also it’s a person who knows how to automate, optimise and speed up every step of software delivery. A DevOps Engineer’s presence means more stable systems, lower costs and, eventually, fewer project-related headaches. But who really stands behind that role? What skills make a DevOps expert an indispensable player in modern business? And what if we told you that our team at Q could be your secret go-to for a technological step forward? Here, in this article, we explore everything you need to know about this important engineering role. What Skills Do You Need to Be a DevOps Engineer? A wide range of technical skills is needed for someone to be a well-rounded DevOps Engineer. Here are the ones that are an absolute must: experience with cloud platforms (AWS, Azure, Google Cloud, etc.) familiarity with automation tools (HashiStack, Ansible, Kubernetes, Docker, etc.) coding and scripting skills are a big plus (Python, Bash, Go, etc.) CI/CD pipeline management monitoring and logging tool expertise (Prometheus, Grafana, etc.) And then there come the soft skills, which include the ability to collaborate with others involved in the project (preferably without conflict 😀), problem solving skills, adaptability, and a whole lot of patience. Main DevOps Engineering Tools & Frameworks When it comes to DevOps engineering, there are many tools and frameworks available. Some of the most commonly used include: version control: Git CI/CD: Jenkins, GitLab CI, GitHub Actions containers and orchestration: Docker, Kubernetes cloud providers: AWS, Azure, Google Cloud infrastructure as code: Terraform , Ansible By using the right tools, DevOps Engineers can enhance efficiency, reduce risks, and improve system reliability. Git flow diagram — this is how we do it What types of Tasks Do DevOps Engineers Do? DevOps Engineers play a key role in the stability and security of IT systems. The key DevOps principles are shared ownership, workflow automation, and rapid feedback. So what kinds of tasks do DevOps Engineers take on? 1) Setting up and maintaining CI/CD pipelines. Without them, there is no fast and reliable software delivery. 2) Managing cloud infrastructure. Everything has to be scalable, secure, and optimized. 3) Automating processes and managing configurations. Because repeating the same tasks manually is not an option. 4) Taking care of system security and compliance. No one wants security breaches or regulatory issues. 5) Monitoring performance. If something goes wrong, it needs to be caught in time. 6) Continuous optimisation. Because it can always be done faster and better, and more efficiently. When you look at these tasks above, if you hire a DevOps Engineer, it will obviously bring huge value to any business. It’s not just a technical role. It is a strategic role that enables faster development and at last, a more stable system. The result is a much much happier client. Benefits & the Importance of DevOps Engineers To make a difference in your project compared to your competitors, hiring a DevOps Engineer would be without doubt a safe bet if you’d like a more stable and faster delivery. Since DevOps Engineers work with automating workflows and CI/CD practices, their role significantly reduces the need to do manual work. When it comes to costs, which are always one of the most important aspects in project development, with DevOps Engineers involved, costs are often reduced thanks to the project-related processes being optimised and greatly simplified. So, with faster delivery and more reliable systems as the end result provided by DevOps Engineers, a more efficient and stable product is more than likely. Why Choose Our DevOps Team? Our DevOps pros have been working on projects for many years and have been helping our trusted partners finish the projects or services we’ve been working on together. Here’s what we have in store when we talk about services: strong background in cloud-native solutions focus on security and scalability customised hiring models tailored to your business needs certified DevOps professionals with years of experience If you want to entrust your project to capable hands, you can do so with us and our DevOps Engineers, given our adaptability and knowledge of the wide range of tools needed to deliver a project. When it comes to our DevOps pros and their work for our partners, this is how our DevOps team made sure the project for the client gets delivered on time with no additional cost or issues that could’ve occurred. Our client is one of the biggest government agencies in Saudi Arabia, so making sure the project goes as smooth as the sail boat in the wind was imperative. And so it went. Q’s DevOps team automated the CI/CD processes and increased the system scalability of the entire project. As a result of their efforts, we optimised infrastructure for both development environments as well as production environments, which ultimately led to a more stable and secure both applications and deployments , and at last — a happy client. Conclusion Having DevOps Engineers during your project is crucial as they work on automating processes, improving quality and ensuring the security of the entire end product. So, why hire a DevOps Engineer? To make things easier for you in your project delivery process. Basically, DevOps Engineers are key members of teams involved in technical projects, making sure the collab between developers and other teams is as effective as possible. To put it simply, they play a vital role when working on projects in today’s landscape. All this results in faster and more reliable project execution. Also, since DevOps Engineers combine knowledge from development and operations support, that makes communication easier and reduces potential (or likely) errors in project delivery. Given that we have a skilled team of DevOps Engineers (as well as many other roles — from developers, designers, BAs, QAs, PMs, etc.), feel free to contact us if you’d like to do business with us. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic February 28, 2025 — 6 min read Fast is easy. Provable is the product. Zlatko Matokanovic February 28, 2025 — 6 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Winter Team Building in The Austrian Alps - Tech Consulting and Software Engineering URL: https://q.agency/blog/winter-team-building-in-the-austrian-alps/ Q’s 110-person winter team building in the Austrian Alps featured snow activities, an 80s-themed party, wellness, and plenty of team bonding. Winter Team Building in The Austrian Alps | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Winter Team Building in The Austrian Alps Winter Team Building in The Austrian Alps March 29, 2022 — 5 min read After an involuntary two-year hiatus from planning trips due to well-known circumstances (yes, COVID, we’re talking about you), our first company-wide team building finally happened. 110 Qumans spent an unforgettable weekend in the Austrian Frühauf Alm-resort! We couldn’t think of a better way to lift the team spirit than going into the mountains, breathing in fresh Alpine air , and enjoying the snow and sunshine. And we weren’t wrong at all. Almost half of the company came to enjoy all the joys of the snow-covered mountain peaks of Innerkrems, Austria, and everything else this idyllic area offers. So, hear out what fun activities we did and how great it was. Day 01 – Snow activities Iva and Marija up in the mountains We left Zagreb at 6:30 am with two buses. For those who aren’t from the capital and had no family or friends in Zagreb, we arranged a stay in a hotel one night prior to departure. It was a logistical nightmare to organize a trip outside of Croatia due to the strong COVID border restrictions Austria had put up (which postponed our trip – twice), but finally, 110 people have crossed the border and our final destination was less than an hour from us. Worth it. By 11 am, we were already greeted with a shot of rakia and had time to check in, rest in our rooms, or enjoy drinks on a hotel terrace of the all-inclusive Frühauf Alm-resort . After lunch, we all headed to a snow hill just 2 kilometers away from our hotel, where good music, mulled wine, beers, and snacks were waiting for us . It wasn’t just laying around and catching sun rays all day, though, because what would company team-building be if there weren’t any organized group activities? Qumans could compete in two organized games: downhill sled racing and blindfolded snowshoe relays! But of course, freestyle snowball fights were an option as well. We declared winners who won tempting rewards – karting for two for the fastest sledder and an Escape Room voucher for the winning team of the blindfolded snowshoe relays. After this amazing day, we went back to the hotel for a well-deserved dinner. Probably the biggest highlight of this winter team building was the 80’s themed party. From Madonna and Björn Borg, all the way to Mate Miso Kovac, the 80’s throwback party was full of impressive costumes and imitations. This party was something different, as it hit all the right spots, just like every party should. Heat of the moment! Big thanks to all Qumans who dug deep into their parents’ closets and found mom and dad’s vintage clothes , put them on, and let us have a little taste of the epic era that the 80s were. The party had its winners too, with the best three outfits getting their well-deserved prizes – gift coupons for Arena Centar in values of 500, 400, and 300 HRK. 80s are back, more stylish than ever. Davor (on the right) won second place for the best outfit of the evening. Day 2 – Wellness and chill On our second day, there weren’t as many activities so that everyone could relax and chill, especially the most hangover ones. With that in mind, Qumans could use the hotel’s wellness & spa area with several types of saunas (Finnish, salt, infrared sauna, etc.), an indoor pool, massage chairs area, and water beds lounge zone. Still, the party continued from the night before in the outdoor heated pool, which has a fantastic view of the snowy mountains. Party never stops – drinks for everyone in the outdoor pool Some decided to spend their day roaming around the hotel, exploring beautiful nature, and spending time with very friendly ponies and alpacas on the hotel farm. These South American camelids feel at home there, just like they would on one of the Andean hills, but who wouldn’t while surrounded by the pristine Alpine ski slopes. And the strongest Qumans who still had the most energy left took a bow & arrow shooting class. After lunch and a bit of rest, around 5 pm, we boarded our buses and left this amazing place, heading back to Zagreb. Baby don’t hurt me Can’t wait for next year After two brilliant feel-good days spent surrounded by snow and good vibes only , we got back to Zagreb with recharged batteries and were fully ready for the work week ahead. It might sound counter-intuitive that we came back full of energy after that weekend, considering we had to get up around 5 am on Friday. But maybe there was something in that Alpine air that got us all grooving even on Saturday night when it was time to go home. We got lucky with sunny weather and the amount of snow for the two days we spent in the Alps, and when you add great people and the inevitable fun that comes with them into the mixture, you get a fantastic team-building weekend. So one thing is sure, can’t wait for next year! ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 29, 2022 — 5 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 29, 2022 — 5 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Wordpress Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/wordpress-meetup/ Q hosted the 2nd Zagreb WordPress Meetup, bringing together the local WordPress community for talks on Gutenberg, workflows, and lead generation. Wordpress Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > WordPress Meetup WordPress Meetup June 4, 2019 — 2 min read Everything fell into place for the @2nd Zagreb WordPress meetup! In collaboration with the WordPress community, we wanted to bring people together to share their experiences and also to introduce ourselves in the best possible way 🙂 We made sure no one stays hungry or thirsty so all you had to do was come, listen to excellent lectures, and spread acquaintances in the Croatian WordPress community. The first lecture on this edition of the Meetup was by Jasmina Zaro, a WordPress developer. She talked about the best and quickest ways to organize workflow in agency or freelance WordPress projects. More of the topics that Jasmina covered were: design needs in PSDs, premium, starter or custom themes, plugins, page builders, etc… The second block of lectures was dedicated to the new WordPress Gutenberg editor. Our Žarko Đurić (from Q) talked about how Gutenberg can adapt to client requirements and how developers can best utilize the potential of this new editor. And the last lecture was how to capture leads by using WordPress, by the name Reverse Lead Capture. This was held by Mateo Starčević, owner of the Cosqai digital agency, who is involved in design development and digital advertising. After the lectures, the sun showed its face so we could enjoy it on our Garden Terrace with fresh cold craft beers and hot taquitos 😀 Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic June 4, 2019 — 2 min read Fast is easy. Provable is the product. Zlatko Matokanovic June 4, 2019 — 2 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Would You Trust AI With Your Strategy? - Tech Consulting and Software Engineering URL: https://q.agency/blog/would-you-trust-ai-with-your-strategy/ Is it time to hand over your business strategy to AI? Find out how to use artificial intelligence in strategic decision-making. Would You Trust AI With Your Strategy? | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Would You Trust AI With Your Strategy? Would You Trust AI With Your Strategy? March 10, 2023 — 7 min read AI and ChatGPT have been the buzzwords lately. Whether you love it or hate it, you can’t escape it (kind of like Miley’s new song, but that’s another topic). Some of the questions that can be heard a lot are: “Is AI going to take my job?”, “Is AI going to replace me?”. While there are probably already numerous views on this, there is no certain answer, and I’m not here to give one. I’m here to argue why, in my opinion, the strategy should be left in the hands of (product) strategists, consultants, and managers , in other words – humans. I explore strategy elements that rely on insights rather than just facts and reasoning behind the frameworks. By showcasing some of Q’s processes and ways of work, I explain how strategy cannot be boxed into a set of instructions or logic formulas but how we still might use AI tools to help us. Strategy ≠ framework “A new strategy for a client is about creating a new reality for a sector” – Strategy (2021), K. Safarova As such, there is no right or wrong way to do it. And there is definitely no one way to do it. Strategy is not straightforward or linear . As new insights arise, it requires multiple back-and-forth efforts, revisions, and updates. And, unlike the logic behind AI, there is no textbook or formula on how to do it. Therefore, it cannot be boxed into a single framework and reused with different clients. It is specifically tailor-made for each client, business, or industry. At Q, we carefully design each strategy project to the client’s needs and the problem at hand. As such, the output and deliverables are different with each project. Frameworks can give an illusion that all you have to do is fill in some boxes, and the answer will magically appear . The reality is far from it. It’s about adapting existing frameworks in a meaningful way – for you – or even creating new ones. One of the widespread and well-known frameworks is the user personas one. In Q, we steer away from it and focus on (unmet) user needs instead. Here’s why and how: That being said, I’m not suggesting that frameworks should not be used or that they cannot be helpful. Their use will only be effective if they encourage critical thinking . The same can be said for ChatGPT. Insights are messy Strategy comes from insights . And insights come from users, stakeholders, market, 3rd party documents, reports, business, etc. In other words, there is no one source of truth . The image above illustrates our way of coming up with insights that lead us to main opportunities and concepts. It’s a dynamic and ongoing engagement that includes some straightforward activities, such as research preparation, conducting research, generating first insights, or analyzing the data. The image itself doesn’t show what happens in the background and what drives it. Essentially, it’s the subtleties that cannot be put on paper or written as instructions . It’s what comes from experience, learning from mistakes, and building rapport. These include, but are not limited to: Iteration : the first version is never the final version. New insights and feedback arise throughout the project, so the findings are constantly updated. Adaptation : even though we can follow similar or the same steps, the insights will never be the same for different clients. There is no one-solution-fits-all. Gut feeling : some of the first things you hear in an interview that grab your attention and you remember right after are usually the most important. Repetition : the most important insights are usually repeated with different participants and across different reports. Usually subtly and phrased differently. Importance of feedback : we don’t work in isolation; the client’s feedback is valued even with work in progress. It can come in any form and at any point during the project. Knowing where to look : often, we encounter large amounts of documents, existing ideas, and materials dating years back. While having a quick and easy way to analyze everything would be useful, not all data is equally important. Different points of view : with usually two or more product strategists working on a project, along with other team members (e.g. UX/UI designers), everyone has a different approach. Creating unique propositions is the beauty of having different minds working on the same problem. (Gradually) inferring : as the image above shows, coming up with opportunities or drawing any conclusions often happens gradually. It is a journey determined by all of the points made before and is not made at one point in time but continuously. “ChatGPT beautifully demonstrates how knowing and thinking are not the same thing. Knowing is committing facts to memory; thinking is applying reason to those facts.” – LA Times Tools like ChatGPT and its knowledge base can help minimize the streetlight effect , a bias common in research. It refers to finding the truth or the answers where it’s easy to find or look for. In practice, it could mean not performing complete and exhausting research due to a lack of time or resources. Given the right instructions, AI could be used to eliminate this bias and present the right facts needed for insights creation. Of course, while tools like ChatGPT are still in their inception stage, it is important to be careful with what the right facts are and what incorrect or biased information might be. Predictably irrational In his book of the same title, through a series of real-life examples and extensive research, Dan Ariely shows how we humans often behave far less rationally than we think . But the good thing is, once we understand where these decisions come from, we can revise our thinking and use technology to design products that overcome these shortcomings . One thing common to all our strategy projects is the people . The users, the client (the stakeholders), and us, the product strategists leading and working on the project. And if we’re all irrational, how do we tackle it? We take a human-centered approach in everything we do. Starting with user research to ideation and user validation and testing. The way users behave, what they think, and how they use your product can only be observed in direct interaction with them. Think back to user needs vs. user personas presented earlier. We, as product strategists, are people working on clients’ projects and, as such, don’t rely purely on data and facts. “Get comfortable using business judgment and logic to narrow the scope of the problem” – Strategy (2021), K. Safarova Using business judgment comes from experience, working on (similar) projects, non-verbal and subtle signs from users during interviews, and from a conversation with a client over a business lunch. It’s a case of learning by doing. Research done by Yalcin et al. (2022) examines how customers react to their bank loans being approved by algorithm vs the human. When their application is rated positively , they evaluate the company more positively. This is because they associate their favorable outcome more with themselves and their specific or personal traits. The same research suggests that despite algorithms’ cost efficiency and predictive accuracy, there is a significant upside to having humans continue to make customer-facing decisions . Therefore, as a client-facing company and working on client-based projects, we will continue to rely on our people to deliver projects^ but embrace new ways to improve. Allies, not enemies Lately, it’s been difficult to avoid articles and news starting with “unlock the power of AI for your business” or “AI tools you need in *insert profession*.” But that’s the thing; AI should be just that – a tool . And, like with any tool, it’s only as powerful as the person using it and how they use it. It will be interesting to follow as these tools develop and become more sophisticated and widespread. Or, as Miley would put it: I can buy myself flowers, write my research questions, talk to users for hours, and say things stakeholders will understand. But that doesn’t mean I couldn’t use someone else’s hand. Sometimes, that hand can be virtual. So let’s try to be allies, not enemies. But be careful not to value yourself so little by thinking you are (easily) replaced. “Like any tool, GPT is an enemy of thinking only if we fail to find ways to make it our ally.” – LA Times Anja Jagodic Anja is a senior product strategist and user researcher at Q. Her main interests include human behaviour and new emerging trends, which she loves to combine in shaping digital products. When not busy exploring the world, she spends her time with her dog Ziggy. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic March 10, 2023 — 7 min read Fast is easy. Provable is the product. Zlatko Matokanovic March 10, 2023 — 7 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Xdebug for PHP developers - PhpStorm and Docker - Tech Consulting and Software Engineering URL: https://q.agency/blog/xdebug-for-php-developers/ What is Xdebug? Xdebug is a PHP extension that provides debugging and profiling capabilities. This tutorial will be mostly based on debugging aspects. Xdebug for PHP developers - PhpStorm and Docker | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Xdebug for PHP developers – PhpStorm and Docker Xdebug for PHP developers – PhpStorm and Docker September 9, 2022 — 8 min read Xdebug allows you to break code execution to see the state/value of the current instantiated variables/objects, test object methods, and pass through all logical steps. It also allows you to modify variables / objects on the fly, affecting the execution of your script during one iteration and running cycle. What this means is you have everything you need to troubleshoot and track down the issues and be more efficient. Many PHP IDEs support Xdebug integration but in this text, I will be explaining how to configure Xdebug on a PhpStorm running with Docker . Installation To run it you need to install and integrate the Xdebug extension. Basic installation is mostly done using pecl (package with repository for PHP extensions). Our dev environment will be run inside docker containers, so we need to add an installation command inside Dockerfile. RUN pecl install xdebug Enable the Xdebug extension must be added to php.ini or any custom ini you want to use as an addition to the default PHP ini files. Basic configuration for Xdebug 3: #enabling extension zend_extension=xdebug.so #setting xdebug working mode. In version 3, you can specify multiple modes separated by comma  xdebug.mode = debug #If enabled, this setting will activate the discovery of the client's IP address. It's set to 0 because we are going to use the static IP address of the host IP running Docker. xdebug.discover_client_host=0 #static IP address of the host machine from docker container for OsX and Windows use host.docker.internal xdebug.client_host=172.17.0.1 #default xdebug 3 port xdebug.client_port = 9003 #PHP IDE trigger key if set, for example, in request URL, it will trigger activation of xdebug xdebug.idekey = PHPSTORM #setting the limit of how deep nesting/recurring requests can go  xdebug.max_nesting_level = 12256 #logging file for xdebug where we can see the details of xdebug execution or check if xdebug is not working correctly xdebug.log = /app/var/log/xdebugaa.log #activating Xdebug before each PHP request (helpful when debugging PHP execution from console) xdebug.start_with_request=yes Find more xdebug settings on: https://xdebug.org/docs/all_settings Basic configuration for Xdebug 2: #enabling extension zend_extension=xdebug.so #enabling xdebug debug mode xdebug.remote_enable=1 #activating xdebug before each PHP request xdebug.remote_autostart=1 #PHP IDE trigger key if set for example in request url, it will trigger activation of xdebug xdebug.idekey=PHPSTORM #setting the limit of how deep nesting/recurring request can go xdebug.max_nesting_level=120000 #if enabled, this setting will activate the discovery of the client's IP address. It is set to 0 because I will use the static IP address of the host IP running Docker. xdebug.remote_connect_back=0 #default xdebug 2 port xdebug.remote_port=9000 #static IP address of the host machine from docker container for OsX and Windows use host.docker.internal xdebug.remote_host=172.17.0.1 To check if xdebug is configured correctly with PHP, run the command inside the container where the PHP instance is running. Php –info | grep xdebug You should get a similar response: Xdebug configuration details in PHP info Don’t forget to restart the docker container after making changes in your local xdebug.ini file. Configuring Xdebug on PhpStorm Open PhpStorm and go to the menu and open the Settings dialog. In the Settings dialog, choose PHP on the left list. On the right part of the dialog, you will see PHP project settings. PHP settings dialog Setting up PHP CLI interpreter To configure the CLI interpreter, press … (three dots) on the right side of the CLI interpreter line. In the CLI interpreters dialog, click on + in the upper left corner and choose to set PHP interpreter from Docker. We need to set the interpreter from our docker-compose configuration file. The first step is creating a Docker connection. If you don’t have a pre-filled Docker server, click the NEW… button in the upper right corner. Remote PHP interpreter configuration dialog Name the docker connection as you wish, select Unix socket if you use Linux as your OS, and press OK. Docker connection configuration dialog When you return to the previous interpreter dialog, you must set a local path to the docker-compose.yml file. When you set the docker-compose path, the Service selector will be filled with the services available in your docker-compose config file. Remote PHP interpreter configuration dialog with service selected Please choose your PHP/web service (the one with a PHP instance), so IDE can read Xdebug configuration from the container. If your PHP path differs from the default one, you can change it in the PHP interpreter path section. When you are done, click on the OK button. PHP interpreter dialog will appear. PHP CLI interpreter configuration dialog The Xdebug version should be automatically detected. If you don’t see it, click on the refresh button. Setting up path mapping and server configuration What is path mapping? Path mapping will tell Xdebug the location/path of our project files in the Docker container or the remote server if we use Xdebug for remote debugging. If we set a breakpoint and run the PHP script without setting proper path mapping, IDE will display an error with the message that path mapping is missing. This is because we are running our project in a docker container, which probably has a different path than our local project. Xdebug – missing server path mapping configuration I usually set the name of the server in the PHP Docker service environment configuration, as if you do not set it, the name of the host in the Xdebug connection will, by default, be “localhost.” Defining serverName in configuration will help you differentiate projects if you are working on two different projects at the same time. Environment: PHP_IDE_CONFIG: 'serverName=docker_symfony' XDEBUG_CONFIG: 'idekey=PHPSTORM' Docker-compose.yml PHP service environment configuration To set server configuration, we can click on the error link or open Settings -> PHP -> Servers. To define server configuration, click on the + button and set the name of the path mapping configuration. PHP/Servers settings dialog In this example, I’m using docker_symfony . I set the same name as the configuration and host names. By default, the port is set to 80 . Change the debugger, if it is not automatically charged, to Xdebug. Below you will see the “Project files” mapping setting. On the left side will be displayed the local path of the project files. On the right side, I need to set the path inside the Docker container. You can find the path inside the docker-compose.yml file under the PHP service volume. volumes:      - '.:/app' Save your changes. Now you are ready to start debugging. Server path mapping configuration dialog PHP Debug configuration interface A short explanation of PhpStorm configuration interface options for debugging: External connections Ignore external connections through unregistered server configurations Suppose we set a custom server configuration name, as mentioned before. In that case, we can check this option to ignore other debugging requests from other projects open inside another instance of PhpStorm IDE. Break at the first line in PHP scripts Helpful to test if the debugger is configured correctly. It will set the breakpoint on the first line in the index.php file. Max. simultaneous connections Limits the number of debugging connections to IDE. Xdebug Debug port Sets the port, which will be used to listen to incoming debugging connection requests. Can accept the external connection Enables/disables debug connection listener. PHP / Debug configuration dialog Step-by-step debugging Setting breakpoints To create a breakpoint, you have to click on the bar with the row numbers, and a red circle will appear. Clicking again on the same line number will remove the breakpoint. Breakpoint example To stop the program in the loop (for, while) or callback methods, we need to add a breakpoint inside them. Otherwise “step over” button will not enter into the loop/method. Additional breakpoint options Right-clicking on the breakpoint will give you additional options: Breakpoint options Using conditional breakpoints To create a conditional breakpoint we need to add a condition that must be met to stop program execution on that breakpoint. Debugging interface Debugging interface Example: IDE will follow the code by the execution priority. First, the getEmail method will be executed. Second, the IDE will get to validateEmailDomain method after $login->getEmail() is executed. On the left side of the debugging interface, you will see the list of scripts accessed during the program run. You can select each script and switch to each script code and see which was executed before the current breakpoint. On the current break step, you can see active variables in the current script/class/method in the middle of the interface. You will see the variables/code watchlist on the right side of the interface. Press the + button to add a variable or code to execute or – to remove it from the watchlist. When adding variables or code to the watchlist, you don’t need to add “ ; “ at the end of the line. Conclusion I hope this has been a good introduction to how powerful Xdebug is. It is a valuable tool and a huge time saver. Xdebug can make your everyday development work much more user-friendly and less mysterious. I couldn’t imagine developing without it, and I hope you will also start using it in your work. Tomislav Cipric Tomislav is a senior software developer with 13+ years of experience in programming. He is specialized in Web application development technologies and project architecture design. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic September 9, 2022 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic September 9, 2022 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Xmas party 2019 - Tech Consulting and Software Engineering URL: https://q.agency/blog/xmas-party-2019/ Q’s 2019 Christmas party brought employees together to celebrate the year, unwind after hard work, and kick off the holidays in festive spirit. Xmas party 2019 | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Xmas party 2019 Xmas party 2019 January 22, 2020 — 1 min read It’s the season to be jolly! Yes, we worked hard, but there’s always time to play — especially at Christmas! It was a great way to wrap up the year and get everyone psyched to accomplish even more next year. Take a look at how we spent the last night before the holidays! Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 22, 2020 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 22, 2020 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Your Guide on How to Implement Passkeys in Flutter - Tech Consulting and Software Engineering URL: https://q.agency/blog/your-guide-to-implementing-passkeys-in-flutter/ Your guide to implementing passkeys in Flutter apps using the passkeys library and following WebAuthn standards for secure logins. Your Guide on How to Implement Passkeys in Flutter | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Your Guide on How to Implement Passkeys in Flutter Your Guide on How to Implement Passkeys in Flutter May 29, 2025 — 11 min read A practical guide to implementing passkeys in Flutter apps using the passkeys library and following WebAuthn standards for secure, passwordless logins. Passkeys are an innovative approach to authentication, replacing traditional passwords with public-private key cryptography. These keys are often generated and managed using biometrics, such as fingerprint or facial recognition, making the process both secure and seamless. This approach not only simplifies the registration and login process but also enhances overall security. However, from a development perspective, implementing passkeys comes with its own set of challenges and considerations. Some aspects can be unclear or tricky, which we aim to address in this article. Implementing Passkeys in Flutter To simplify the implementation of passkeys in Flutter we can use the passkeys library . The library will help with the platform specific code that is required to use passkeys. It offers support for Android , iOS and Web . The library can be used together with the Corbado server (an already implemented relying party server), however, there might be reasons you want to build your own relying party server. Advantages of having your own relying party server are reduced pricing, users are stored on your server, no need for user migration if you already have existing users, and more control over the flow. There are two choices here for implementing the relying party server: WebAuthn or FIDO2 standard. Registration and Authentication can be exposed with the endpoints, which we will cover later. These endpoints should provide values that the passkeys library can use for native calls (creating and registering passkeys). It can be a little challenging syncing the two parts, and that is exactly the motivation for this article. Note that the library doesn’t require min SDK versions, but the passkey support starts in: Android 28 and iOS 16 . To keep the flow user friendly the passkey UI and feature should be hidden on unsupported SDKs. The library also offers canAuthenticate method for easier implementation of the said flow. The web is a bit different, and not all devices there support biometrics, however there are other options of keeping a cross-platform passkey like the USB security key. Let’s jump to the basics now. Usually on Frontend the passkey creation and login with passkey is done via three steps: Begin – server call Registration/Login – native call – in our case: library call Finish – server call We will cover all three steps in more detail. An important note is that passkeys use cryptography to enable login with passkeys. A private key is created and stored on the device, and it can be synced across different devices. Deleting the keys cannot be done within an app, it is managed by credential managers. The user has a choice to pick this manager when creating the passkey. On the other hand, a public key is stored on the server. Also the server is the one that should create challenges for the frontend with which it can create private keys. This is done with the first step. How to start creating passkeys in Flutter? Step 1: Begin This is the first step for creating a passkey or login with a passkey. Following WebAuthn standard this step is a simple GET request to the server with the url something like: https://base_url/ passkeys/reg/begin . The result of this method is used to create a passkey. The response can be customized but the most important part of the response is the challenge. There should also be a Relying party id . This will protect your app from phishing attacks. Relying party response should contain the name and id. Name is the name of the app and isn’t all that important. However the id is the domain of your app. It is important to set this up correctly. You can choose the domain or the subdomain but the /.well-known/ folder with android and apple files must be stored at the exact url in the id. So, for example if you have dev.example.com and example.com, it is much better to make the relying party id as domain , example.com, and host files at “example.com/.well-known/assetlinks.json” and “example.com/.well-known/apple-app-site-association”. This way there is no need to change the relying party id based on the environment, and no need to host the/.well-known folder on subdomains. The well-known folder works for mobile apps, but for the web app it is important that the relying party id is a domain or subdomain of the web app. To summarize, the relying party id should be the domain of your frontend url , and that is where the/.well-known folder should be hosted. This works only if your dev and staging environments are subdomains of your production environment of course. You should also provide Authenticator Selection Type . These values can be provided from the server as well. It is recommended to include all values, because otherwise it might not work on all platforms. // Set values for all fields, or errors may be encountered on some platforms final authenticatorSelectionType = AuthenticatorSelectionType( requireResidentKey: false, // Example setting residentKey: ResidentKeyRequirement.required, authenticatorAttachment: AuthenticatorAttachment.platform, userVerification: UserVerificationRequirement.preferred, ); How you set these settings defines how the authenticator behaves. For example if we set authenticator attachment to platform it means we are using the device specific authenticators, like fingerprint or face ID. This also makes the created passkey bound to the device, and cannot be used on other platforms. There is also a cross-platform option here for using the key across different devices, but we will not focus on this here. The resident key is about creating a resident or a non-resident key. We leave this as preferred and this means if possible it will create a resident key and store it in the authenticator, but if it fails it won’t be stored in the authenticator and in turn will create a non-resident key. If you want only resident keys then required might be a better option. The boolean value about requiring a resident key is just backwards compatibility with WebAuthn level 1. We can keep the user verification to the standard preferred meaning the user should authenticate but can proceed without it. Having the user authenticated before the passkey creation is a good way to enhance security and protect from unauthorized access. Source and more information for AuthenticatorSelectionType can be found here . Step 2.1: Register Using the values from Step 1 we can now create the passkey in Flutter. A passkey can be created for the existing user that maybe uses a different sign in method, or a new user can be registered directly with the passkey. The latter means that the user is only using passkey, and this is preferred for all users, as this makes the safest method of sign in. Regardless, the creation process is the same. In the following code snippet the Flutter passkey is created for the new user. Most of the random values can be retrieved from the server after the initial /begin call. final user = UserType( id: "uuid" // Example user ID name: "john_doe", // Example username displayName: "John Doe", // Example display name ); final rp = RelyingPartyType( name: "Example App Name", // Example Relying Party name id: "example.com", // Example domain ); // Set values for all fields, or errors may be encountered on some platforms final authenticatorSelectionType = AuthenticatorSelectionType( requireResidentKey: false, // Example setting residentKey: ResidentKeyRequirement.required, authenticatorAttachment: AuthenticatorAttachment.platform, userVerification: UserVerificationRequirement.preferred, ); // Supported public key algorithms for credential creation final pubKeyCred = [ PubKeyCredParamType(type: "public-key", alg: -7), // ES256 Algorithm PubKeyCredParamType(type: "public-key", alg: -257), // RS256 Algorithm ]; final challenge = "dGhpcy1pcy1hbi1leGFtcGxlLWNoYWxsZW5nZQ"; // Example challenge final registerRequestType = RegisterRequestType( challenge: challenge, relyingParty: rp, user: user, authSelectionType: authenticatorSelectionType, excludeCredentials: [], timeout: 60000, // 60 seconds timeout pubKeyCredParams: pubKeyCred, ); final RegisterResponseType platformRes = await passkeyAuthenticator.register(registerRequestType); There is quite a lot of setup here, however most of the data can be retrieved in the response from the server /begin call. The server provides Relying party data and challenge, but note that challenge needs to be base64url encoded before passing it to the library. It is ok if the server already sends it encoded but this should be checked to avoid unnecessary errors. It is also recommended that the server provides the following values as well: User, authentication selection, public key credentials and exclude credentials. Otherwise these values can be provided in the frontend. Frontend specifies timeout and some parts of authenticator selection if they are not present in the server. This was already explained in detail in the previous step, just make sure to include all values here to avoid issues on different platforms. Step 2.2: Login Similarly to registration, we can simply replace this step for authentication. We call /begin again, and the data we need here is relying party id and challenge . For login the begin call can start with auth/begin to separate it from the registration. With that information from the server you can proceed to authenticate with the native call to the library by creating AuthenticateRequestType and providing it to the PasskeyAuthenticator authenticate method. If this completes successfully the response can be used to send to the server to login successfully. Here is an example with random values: final rp = RelyingPartyType( name: "Example App Name", // Example Relying Party name id: "example.com", // Example domain ); final challenge = "dGhpcy1pcy1hbi1leGFtcGxlLWNoYWxsZW5nZQ"; // Example challenge final authenticateRequestType = AuthenticateRequestType( relyingPartyId: rp.id, challenge: challenge, userVerification: 'preferred', mediation: MediationType.Optional, preferImmediatelyAvailableCredentials: false, ); final platformRes = await passkeyAuthenticator.authenticate(authenticateRequestType); Step 3: Finish Finally we finish the process with a POST /finish call to the server where we send signed challenge and other metadata. This can also be a separate call for login and registration but the data is very similar. The server uses this information to verify the authenticity of the Flutter passkey process. If everything checks out, the server either registers the user’s public key (in case of registration), or logs the user in (in case of login). Regardless you should be able to get a verification token from the response of the finish call. This way you can automatically authenticate the user. Here is the example request: // Example of a finish contract to send to the server final contract = PasskeyFinishContract( id: platformRes.id, rawId: platformRes.rawId, authenticatorAttachment: 'platform', attestationObject: platformRes.attestationObject, clientDataJSON: platformRes.clientDataJSON, // Send this part below only for authentication signature: platformRes.signature, userHandle: platformRes.userHandle, ); The Attestation and clientDataJson contain the most important information for both authentication and registration. The server will need the full values contained there, so make sure to send it. More on this topic can be found at the following links: attestation and clientDataJson . To identify the passkey both the id and raw id are provided as well to the server. This helps to match the server public key with the device’s private key. Since WebAuthn standard uses both keys it’s best to send both of them to the server. Additional Details To make the package work on the web application, a file must be included alongside the index.html. This file, bundle.js, is a JavaScript file that is used to integrate with WebAuth API on the Web Application. There are two ways of including this file, referencing it via the url as it is hosted on the package site, or self-hosting the file. I believe self-hosting is a better option, as you can tighten up the safety rules regarding JavaScripts with CSP (content security policy). Managing the Passkeys Managing passkeys mostly happens on the native side and the keys are stored by the Credential Manager . When a user creates a passkey, the native system usually lets them pick which manager or account (like Google Password Manager or iCloud Keychain) will store the private key. Important thing to know: once the passkey is created, your app won’t have direct access to it anymore. You can’t delete or manage the private key from inside the app — it has to be done manually by the user through the credential manager. There are ways to rename Flutter passkeys from the manager side (this can also be done by labeling it on the server), but deleting is trickier. To properly remove a passkey, you should clean it up both in the manager and the server . To delete it from the manager, you can only do this directly in the manager for safety reasons, and this requires user manual action. Deleting it on the server can be done through an endpoint call. Conclusion Passkeys are quickly becoming the new norm — some apps already made them the first thing you see when logging in, pushing passwords a click away. It’s a much smoother experience for users, and a lot more secure. That said, setting it all up isn’t exactly simple. You need proper support both on the server and on the frontend side, and there are a lot of details you need to get right for it to work across platforms. Also the devices need to support some form of biometric authentication. Passkeys definitely feel like the future , but we’re probably not making a complete switch from passwords just yet. For now, it’s best to offer both and start getting comfortable with the flow. Luka Zanki Luka is a Mobile Engineer who started his career as an Android Developer, but later also started working with Flutter and Kotlin Multiplatform technologies. In his spare time he likes to spend time with his wife and pets. He also likes movies, restaurants, video and board games, and short trips around the countryside. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic May 29, 2025 — 11 min read Fast is easy. Provable is the product. Zlatko Matokanovic May 29, 2025 — 11 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # Your Guide to Mastering the Digital Product Design Process - Tech Consulting and Software Engineering URL: https://q.agency/blog/your-guide-to-mastering-the-digital-product-design-process/ A well-thought-out design process is crucial to create successful digital products. See the key stages of the digital product design process. Your Guide to Mastering the Digital Product Design Process | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > Your Guide to Mastering the Digital Product Design Process Your Guide to Mastering the Digital Product Design Process January 17, 2025 — 8 min read When it comes to creating digital products, one of the most important things in today’s ever-changing tech landscape is having a structured and well-defined digital product design process . It doesn’t matter if we’re creating a website, mobile or web app or some other software products, a well-thought-out design process is crucial to make user experience efficient and user-friendly. In this guide, we’ll go through the key stages of the digital product design process, and highlight one of Q’s standout design examples. What Makes a Good Digital Product Design? The role of a good digital design process is to make your product both functional and aesthetic . Not to mention, the focus should be on user-centricity and usability as well. A well-designed product is easy to navigate, and has one essential goal. To meet the needs of your end user. So, what can help make the product user-friendly? Taking into account the design that’s aligned with the brand’s identity — as this makes your product on-brand and, ultimately, improves the overall UX. Another important thing is responsiveness , and taking into account that your product has a “smooth” user experience across all devices — whether we’re talking about computers, smartphones, or tablets. Relying on your users’ feedback is more than essential, so that you can upgrade your product more easily based on what you get from people who the product was made for. With these things in mind, your well-designed product is most likely bound to shine. It’s no secret Apple is owning the design game — a clean, minimalistic & smooth approach is the(ir) way to go. Here’s our breakdown of the 6 stages of designing and crafting a successful digital product that stands out from the rest. 1) Research & Discovery Understanding the problem you’re solving is key to delivering a successful final product. In the research and discovery phase of the process, the main step is collecting information from your client that will be your project’s pillar and create an important framework for the next stages. Key Steps: Defining the goal: Identifying the main challenges and project objectives. Understanding your users: Conducting user interviews, surveys, and market research to understand your target audiences. Competitive analysis: Analyzing your competitors’ existing solutions in the market and finding gaps and opportunities to leverage them for your own product. Result: A better, clearer view of your target audience needs, market demands, and project goals. 2) Ideation & Concept Development After getting the broader picture with insights regarding your audience and competitors, the next step involves discussing and ideating the product concept. Key Steps: User personas: Creating detailed personas to represent key user groups — this includes Ideal Customer Profile (ICP) and Ideal Buyer Persona (IBP) as well. User journeys: Outlining user experience to understand how future users will interact with your product. Sketching & wireframing: Developing low-fidelity sketches and wireframes to visualize the structure and flow of the product. Result: The team working on the project now has a conceptual design, workflow and wireframes essential for the next phase, based on which they can fine-tune the product’s concept. 3) Prototyping & Testing Prototyping is an iterative digital product design process that transforms your concepts to interactive models and allows the team to refine them accordingly. It’s a crucial step as it gathers information from users and checks if it meets the necessary requirements before the next phase — development. Key Steps: Building prototypes: Creating clickable prototypes using tools like Figma, Adobe XD, InVision, or Sketch. Usability testing: Conducting tests for real user interaction with your prototype to identify the product’s pain points, user-related issues, and opportunities to improve it. Iteration: Applying [many] design refinements based on user feedback to improve usability and functionality. Result: A comprehensive prototype that will serve as the blueprint for software development. 4) Design & Refinement This stage is about refining the visual and interaction elements so that they’re in line with the brand and meet user expectations. Designers work hands-on with stakeholders to achieve a balance between functional and aesthetic. Key steps: High-fidelity mockups: Creating fully developed, refined designs with branding, typography, color palette, and visuals. These mockups should show what the final product will look like. Design systems: Creating shareable components, style guides, and design patterns for product consistency. Well-designed systems lead to higher collaboration efficiency and better scalability. Collaborative feedback: Working with stakeholders, developers, and end-users to verify that the prototype meets feasibility. This will allow you to iterate and address feedback to refine your designs. Result: Design files ready for development. At this point, designs need to incorporate both functional and aesthetic requirements that should be fully aligned. 5) Development Handoff This stage serves as the intermediary between design and development and ensures that the final product matches the intended design concept. At this stage, collaboration among the teams is extremely important. Key Steps: Design handoff tools: Utilizing useful tools like Zeplin or the Inspect feature in Figma Feedback loops: Keeping open communication for any questions between designers and developers and helping ensure accuracy. Quality assurance: Working together on testing to identify and fix design-related problems. Result: A fully functional product developed in line with initial design specifications. This is the stage that leads to a successful product launch. 6) Launch & Iteration The last stage is the delivery of the product to users and iteration based on real-world user feedback and usage analytics. By continuously refining it, this stage ensures the product remains competitive and relevant. Key Steps: Soft launch: Releasing the product to a very small audience for initial insights, performance validation, and finding any unforeseen issues. Analyzing user data: Using analytics tools to track engagement metrics, user behavior, and performance data. This analysis helps identify patterns and areas for improvement. Optimization: Leveraging the insights, you have data-driven information on what types of improvements to make, troubleshooting, and new features. Frequent updates ensure the product meets user requirements and that it’s in line with market trends. Result: A product that continues to be improved based on user expectations and market demand. This final stage lays the groundwork for a feedback loop for future development and product enhancements. Challenges in the Digital Product Design Process — and How to Overcome Them Designing a good digital product often faces problems like different expectations among stakeholders involved ‒ and that’s why clear communication and alignment from the very start are crucial . Because crafting designs that are future-proof needs thinking ahead and adjusting your product to changing technologies as well as user needs. Addressing these challenges involves structured feedback loops, prototyping, and dedicated project management. By targeting these priorities strategically, teams can make designs that are not only innovative and creative, but also helpful and practical for the broader community. Q’s successful design example Now this is a project we are very proud of. It’s called Airex , a Swiss company that produces high-quality training mats and other specialty foam products. ‍This company is dedicated to sustainability by creating eco-friendly products that enhance energy efficiency and reduce environmental impact. Q team conducted a much needed user and trainer research to gain a deep understanding of the challenges and opportunities of digital training apps. For our client, Airex, we delivered product vision and strategy, user research, product discovery, design — following the process of digital product design guidelines, as well as web and mobile app development. Results? Shaping and creating a mobile app and web app that engages more users and trainers , helps the company build a trustworthy relationship with amazing Airex products with 40+ pre-recorded videos and a 100% increase in live stream & screencasting. Following the digital product design process guidelines, we delivered the new Airex web and mobile app, that you can read more about in our case study . Conclusion The process of designing a digital product is complex, and it requires a combination of creative and strategic thought and collaboration. These stages help to ensure that products are created with both eye-catching design and functionality in mind. The step-by-step approach to the process makes it easier to help adjust, learn from past mistakes, and keep optimizing your new product for a successful launch in a competitive market. By applying the steps we covered in this blog post, whether you’re a designer, developer, or product manager, it’s easier to meet the necessary requirements, innovate more efficiently, and create digital experiences built to last. Want to get started on building your next best-in-class digital product? Let’s make it happen. Together. ssakac PHP developer qadmin GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic January 17, 2025 — 8 min read Fast is easy. Provable is the product. Zlatko Matokanovic January 17, 2025 — 8 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency ======================================================================== # ZgPHP #92 Meetup - Tech Consulting and Software Engineering URL: https://q.agency/blog/zgphp-92-meetup/ Q agency hosted ZgPHP #92, bringing developers together to discuss PHP, Symfony, Docker, and mentoring in a collaborative meetup. ZgPHP #92 Meetup | Q Agency - Tech Consulting and Software Engineering AI at Q Services Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work How we work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Q About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Partner with us Have a project or an idea to discuss? Contact us Contact Us Menu Home > Blog > ZgPHP #92 Meetup ZgPHP #92 Meetup April 25, 2019 — 1 min read In collaboration with guys from ZgPHP, we organized and hosted our first PHP meetup in our new oice. We had snacks and drinks available, comfortable seating, and high-quality presentation equipment. Our speakers Blaž, Miha, and Nino have shared their knowledge with our employees and the external community. They discussed Symfony serializer, PHP, and Docker and a little bit about how to teach and mentor others. We tried to help people feel welcome by soliciting feedback and asking for ideas on future talks or if there was anything they would like to hear about or if there was something we could change. The positive feedback of our meetup gave us a push so we will follow our plan to run many more events like this. We appreciate everyone who gave up an hour or two to come and speak or listen to our speakers and we hope that they found tremendous value in doing so. Kosh Pavic Our Event & Communications Specialist brings creativity and sharp wit to every project, turning every event into a memorable experience. She's got a gift for storytelling and connecting with people, always making sure the message sticks and the experience shines. GIVE KUDOS BY SHARING THE POST! Facebook LinkedIn Flutter Push Notification Actions: How to Implement Them on iOS and Android Zvonimir Babic April 25, 2019 — 1 min read Fast is easy. Provable is the product. Zlatko Matokanovic April 25, 2019 — 1 min read Partner with us Have a project or AN idea to discuss? Contact us General AI at Q Services AI & Data Agentic Sprint AIOps-as-a-Service Multi-Agent Orchestration Workflow Automation Data and Integration Product Engineering UX/UI Design Digital Product Development Re-Architecturing & Modernisation Cloud Engineering Tech Consulting New Product Discovery Technology Due Diligence AI & Data Readiness & Strategy Case Studies How We Work Explore Identify where AI and digital products can create real value before committing to delivery. Assess Validate the opportunity, readiness and technical path before moving into the build. Build Turn validated opportunities into scalable AI systems and digital products built for real-world use. Run Keep products, AI systems and delivery teams reliable, efficient and ready to evolve. Cooperation Models Team as a Service Hire a cross-functional product team that takes care of delivery end to end. Fixed Scope and Price Work to an agreed scope, budget and delivery plan, with clear expectations from day one. Staff Augmentation Scale your team with experienced engineers who work as part of your organisation. Human-Agent Pods Build with AI-assisted teams while keeping human oversight and accountability. About About Us Meet the people, values and culture behind Q. Careers Explore open roles and what it’s like to work at Q. Blog Stay up to date with our latest thinking and technical expertise. Contact Us Cooperation Models Team as a Service Fixed Scope & Price Project Staff Augmentation Human-Agent Pods Services AI & Data Product Engineering Tech Consulting Legal Legal info Privacy Policy Cookie policy Locations United Kingdom Croatia Social LinkedIn Facebook Business impact, beyond code. ©2026 – Q Agency