Sprint 0 - JuanJoseBotero/Merko GitHub Wiki
One of the main challenges in conducting market analysis is the significant amount of time it takes due to the overwhelming volume of data and its decentralization. Information is often scattered across multiple sources, such as news outlets, social media, financial reports, and market databases, which makes it difficult to gather and process efficiently. As a result, analysts spend more time collecting and organizing data than generating insights, delaying strategic decision-making and reducing overall agility in responding to market changes.
Our solution is an application that streamlines market analysis through the use of AI-powered prompt templates. Users can select and customize these templates to fit their specific needs, allowing the system to automatically gather, process, and analyze relevant market data within the platform. By centralizing and simplifying this process, the application drastically reduces the time and effort required for research. The results are presented in a clear and dynamic dashboard, giving users fast, actionable insights without the need to manually search through decentralized sources.
| Name | Roles | |
|---|---|---|
| Juan José Botero García | Developer - Product Designer - Tester | [email protected] - [email protected] |
| Samuel Villa Valencia | Developer - Analyst/Scrum Master | [email protected] - [email protected] |
| Darieth Farid Sánchez Velásquez | Developer - UX | [email protected] - [email protected] |
| Valentina Benitez Zapata | Developer - Arquitect | [email protected] |
Profile: Professionals, entrepreneurs, or companies that need to understand the market, trends, and competition.
Objective: Obtain accurate and processed information to make strategic decisions.
Interaction:
-
Selection and customization of prompt templates.
-
Viewing results in dashboards.
Profile: Technical or support manager of the platform.
Objective: Manage users, templates, permissions, and system performance.
Interaction:
-
Register, delete, and modify accounts.
-
Configure integrations and data sources.
-
Monitor performance.
Profile: Platform development team.
Objective: Improve, update, and maintain the application.
Interaction:
-
Implement new features.
-
Optimize integrations with external APIs.
-
Maintain servers and security.
-
Web Front-end: React (graphical user interface).
-
Back-end: Django and Django REST framework (request processing, logic handling, and APIs).
-
Database: dbsqlite3 (user data and configuration storage).
-
AI APIs: OpenAI API or other LLM provider for market analysis.
-
AWS Cloud Server: Hosts backend, database, and processing.
-
User Computer: Desktop or laptop device with web browser.
-
Mobile Devices: Responsive version of the site.
-
External API Servers: Provide real-time market data.
| TERM | DEFINITION |
|---|---|
| API | Application Programming Interface: Protocol with a set of rules, used to communicate applications among each other. |
| Prompt Template | Pre-designed prompt structure that guides the user in providing only the key information needed for the AI to perform a specific market analysis |
| LLM | Large Language Model: Area of the artificial intelligence trained to understand and generate human language. |
| Market analysis | The process of studying a specific market within an industry to understand its dynamics, including customer needs, market trends, size, growth potential, competition, and other key factors. |
| Objective | Specific and measurable goal that an user aims to achieve. |
| Prompt | The request sent to the LLM composed by specific information provided by the user. |
| Dashboards | Visual interfaces that display key data and metrics in a clear, organized, and interactive format. In the context of market analysis, dashboards present the results of research and AI-driven insights. |
| Commercial area | Responsible for managing all activities related to the sale of products or services, developing market strategies, and maintaining customer relationships. |
| UID | Requirement Description |
|---|---|
| FR01 | If the user wants to access the catalog of prompts the system must display at least 5 predefined prompts that are fully customizable and easy to navigate. |
| FR02 | If the user wants to configure a prompt the system must allow the user to edit parameters such as geography, customer type, sector, among others, so that the analysis fits the needs of their business. |
| FR03 | If the user selects and configures a prompt the system must allow the AI agent to generate a structured and precise analysis that is clear and understandable. |
| FR04 | If the user wants to complement analyses the system should allow the AI to gather external information via web scraping from reliable sources to integrate it in the dashboard. |
| FR05 | If the user wants to see the results, the system must display a visual dashboard that includes graphs, tables, balance sheets, and projections after processing the analysis to facilitate interpretation. |
| FR06 | If the user wants to preview an instruction before executing it, the system could display a dynamically updated preview with a clear button to confirm and send it to the AI agent. |
| FR07 | If the user wants an import and supply chain analysis the AI must evaluate imports, distributors, product categories, and volumes to display results on the dashboard. |
| FR08 | If the user wants a demand analysis the AI must forecast demand dynamics, identify risks and growth levers to show projections on the dashboard. |
| FR09 | If the user wants a growth opportunity analysis the AI must identify, prioritize, and rank opportunities to display insights visually on the dashboard. |
| FR10 | If the user wants a customer analysis the AI must perform segmentation, churn modeling, and provide value propositions with results displayed on the dashboard. |
| FR11 | If the user wants a competitive analysis the AI must gather competitor insights, financial overviews, and market opportunities to show them in the dashboard. |
| FR12 | If the user wants a financial analysis the AI must process financial data, predict risks and trends, and present the results in the dashboard with comparative visual formats. |
| FR13 | If the user wants to log in the system could provide account creation and login forms, validate credentials, maintain sessions, and allow logout from the home page. |
| FR14 | If the user wants to save analyses the system could allow saving them in the dashboard after login, display them in a list, and provide the option to delete them. |
- Initial Requirements Definition: One of the main sessions to define the overall scope and functionalities of the project took place during a meeting with the stakeholder on July 31st. With the permission of all attendees, the video of this meeting was recorded and shared as evidence. Meeting Here
- Prioritization Technique: The MoSCoW method was used to prioritize requirements (Must have, Should have, Could have, Won’t have). Additionally, complementary techniques such as User Story Mapping and Acceptance Criteria Workshops were applied to ensure clarity and alignment.
-
Team Involvement: The requirements gathering process involved the entire project team, ensuring that multiple perspectives and expertise were considered, some screenshots for evidence:
- Refinement Process: After the initial stakeholder meeting, additional sessions were held between the team to refine and detail the requirements further, focusing on feasibility and alignment with business objectives.
- Access URL: https://www.tableau.com
- Description: Displays interactive dashboards with clean and highly customizable visualizations. It is specialized in visual and interactive analysis, offering an intuitive drag-and-drop interface and pre-designed dashboards.
- Differentiator: Does NOT include web scraping to complement its analysis and licenses are very expensive and mainly designed for enterprise-level clients.
- Access URL: https://www.qlik.com/us
- Description: AI-powered analytics and robust data integration solutions tailored to meet the evolving needs of enterprise organizations.
- Differentiator: Does NOT include web scraping capabilities.
- Access URL: https://dovetail.com/
- Description: AI-native software and agents that instantly turn every customer interaction into insights that drive action.
- Differentiator: Does NOT include web scraping features and business model is subscription-based (monthly plans).

- See the board in Miro
- See backlog here
Description:
As a sales employee, I want to access a catalog of configurable prompts to analyze opportunities for growth and increased sales.
- Create database structure for predefined prompts
- Implement prompt configuration UI
- Display at least 5 predefined prompts
- Add preview functionality for each prompt
- Ensure navigation is visual and user-friendly
- The system must display at least 5 predefined prompts that are fully configurable.
- Users must be able to view the overview of each prompt before selecting it.
- The interface must be visual and easy to navigate.
Description:
As a user, I want to configure the parameters of each message so that the analysis adapts to the needs of my business.
- Design input form for parameters (geography, customer type, sector, etc.)
- Implement dynamic text updates while configuring
- Display message preview during parameterization
- Add optional section for additional information
- The system must display variables that the user can edit (geography, customer type, sector, among others).
- The message text must be dynamically updated while being configured.
- The system must display the message while it is being parameterized.
- The system must display a section where the user can optionally add additional information.
Description:
As a user, I want the AI agent to generate an analysis based on my selected and parameterized prompts.
- Connect AI agent with parameterized prompts
- Ensure structured and accurate results
- Format results for commercial readability
- Test AI output for different prompt configurations
- The AI agent must return a structured and accurate analysis for each prompt.
- The result must be clear, accurate, and understandable for the commercial area.
Description:
As a user, I want the AI to perform an import and supply chain analysis to better understand market dynamics and distributors.
- Collect and preprocess import data
- Implement AI analysis for packaging, containers, and categories
- Identify importers and volumes
- Analyze distributor dynamics (relationships, customer mix, etc.)
- Display detailed results with charts on the dashboard
- The AI must analyze the dynamics of glass imports, packaging type, containers, and product categories.
- The system must identify who is importing and the associated volumes.
- The AI must analyze distributor dynamics (relationships, customer mix, segments, and imports vs. local production).
- The analysis must determine whether distributor customers are potential customers for the user.
- The results must include granular information (competitors, customers, capacity, location, color, work family).
- The results must be displayed on the dashboard using appropriate graphs.
Description:
As a user, I want AI to perform demand analysis and forecasting to improve the accuracy of business planning.
- Gather demand-related data
- Train predictive models for demand forecasting
- Identify positive trends and risks
- Generate long-term demand projections
- Display forecast results with charts on the dashboard
- AI must analyze demand dynamics to support forecasting.
- The system must predict positive trends and potential risks, not just growth.
- AI must run predictive models to identify growth levers.
- The analysis must include long-term demand projections.
- Results must be displayed on the dashboard using appropriate graphs.
Description:
As a user, I want AI to identify and prioritize growth opportunities to support strategic decision-making.
- Collect business intelligence data
- Implement ranking algorithm for growth opportunities
- Generate insights on new products, customers, or categories
- Display results with clear indicators on the dashboard
- AI must prioritize and rank growth opportunities based on the data collected.
- The system must generate insights into the development of new products, customers, or categories.
- The AI must identify sources of market intelligence using analytical models.
- The results must be displayed with clear visual indicators on the dashboard.
Description:
As a stakeholder, I want the application to have different types of tests to ensure its proper functioning and quality.
- Implement unit tests for each module
- Create integration tests (prompts → AI → dashboard)
- Set up functional tests for main user flows
- Document test results and coverage
- Unit tests must be implemented for each module of the application, ensuring that individual functions perform as expected.
- Integration tests must be performed to validate that the modules interact correctly with each other (prompts → AI → dashboard).
- Functional tests must be performed to ensure that user flows meet the requirements established.
The proposed system is based on the creation of a market agent with a certain level of customization, thanks to prompts with variable words. Its main objective is to collect information on specific topics through AI queries, trend applications such as Google Trends, or techniques such as web scraping. The system must deliver this information processed and represented in statistical diagrams to guide experts in their decision-making.
Features included in this Scope
-
Creation of dashboards: Users will be able to create different types of dashboards based on the classification of the prompts chosen to collect information.
-
Custom prompts: Users can edit certain keywords to gather specific information on the required topic, as well as add extra information to get a better response from the agent.
-
Processed data: In order to make the data more readable for decision-making based on expert criteria, it will be represented using different diagrams in a clear and concise manner.
-
Dashboard history: Users can view and save data from the dashboards to keep track of and gain insight into how the market changes over time.
System Boundaries:
- Dependence on access to information: The system will be heavily dependent on public information accessible through the technologies that will be used, so the result may vary from what is expected.
Minimiun Viable Producto (MVP): The MVP of the project will consist of a web platform that allows users to enter keywords into prompt templates to obtain a basic market analysis. This initial version will include a simple interface that will send the keyword to the backend. The backend will consult Google Trends to obtain trend data and use an artificial intelligence API to generate a summary of the topic. The results will be displayed clearly on the frontend, allowing the user to better interpret the data.
System Dimension: The MVP version of the system will be designed to handle up to 5 simultaneous users. It is expected to receive between 1 and 5 requests per second, each generating responses with average response times of 2 to 4 seconds. These requests involve calls to external APIs such as Google Trends or AI, so moderate latency will be accepted.
Nonfunctional Requirements:
User-Friendly: The system must have an intuitive and user-friendly interface. Navigation must be simple, clear, and consistent throughout the site, allowing users to access any module in a maximum of four clicks.
Acceptance criteria:
- The interface must have intuitive and accessible buttons.
- All system navigation must require a maximum of 4 clicks to access any module or section.
- The visual design must be consistent throughout the application: same color palette, uniform fonts, and consistent button styles.
- There must be a clear navigation system, with a main menu visible in all views.
- All messages (error, confirmation, and help) must be written in an understandable way and in the main language of the application.
System testability: The system must allow for the implementation of different types of tests (unit, integration, and functional) that guarantee the correct functioning of its components and the overall quality of the software.
Acceptance criteria:
- Unit tests must be implemented for each module of the system, verifying the expected behavior of individual functions.
- Integration tests must be performed to validate the correct interaction between system modules (e.g., flow prompts → AI → dashboard).
- Functional tests must be performed to ensure that user flows meet the requirements defined in the user stories.
System maintainability: The system must be easily maintainable, allowing future developers to understand and modify the code without difficulty.
Acceptance criteria:
- The source code must be clearly documented, using descriptive variable and function names, as well as comments where necessary.
- The system architecture must be modularized, facilitating its understanding and modification.
- All dependencies and external libraries must be declared and versioned in a file such as requirements.txt or package.json.
- The repository must include a README file with clear instructions for installing, using, testing, and deploying the system.
System extensibility: The system must be easily extensible, allowing the incorporation of new functionalities, prompts, or modules without compromising stability or requiring significant rewriting of existing code.
Acceptance criteria:
- The system architecture must be modularized, facilitating the addition of new components such as prompts, filters, or dashboards.
- A decoupled design must be used, allowing for the modification or expansion of functionalities without altering the core of the system.
- The application must have clear technical documentation so that new developers can understand and incorporate changes without difficulty.
System security: The system must guarantee security in communication and data handling, protecting both the user and the integrity of the system against common threats.
Acceptance criteria:
- All communications between the frontend, backend, and external APIs must be carried out using the HTTPS protocol, ensuring the encryption of transmitted data.
- User input must be properly validated and sanitized, avoiding vulnerabilities such as code injection (SQL injection, XSS, etc.).
fault tolerance: The system must be able to continue functioning stably in the event of external service failures.
Acceptance criteria:
- The system must implement fault tolerance mechanisms so that if an external API fails (e.g., Google Trends or AI), the backend does not stop or generate fatal errors; it must deliver a friendly error message or use a fallback if possible.
Components of the Presentation Layer:
- prompt_selector: Select one of the available prompts.
- prompt_editor: Edit the variable fields of the selected prompt.
- api_service: HTTPS connection with Django.
- dashboard: Display the "opportunities" to the Sales Department.
Components of the Logic Layer:
- controller: Receive and respond to HTTPS requests.
- search_orchestrator: Orchestrate external services.
- opportunity_analyzer: Analyze information and extract opportunities.
- manager: Encapsulate data access (ORM).
Components of the Persistence Layer: More details in the Domain Model.
Components of the Data Access Layer: External services.
The architecture is based on a layered architecture (4 layers) that are distributed and connected as follows:
-
- Presentation layer (Frontend) = Technologies such as React, Typescript, and Tailwind would be used, connected to the logic layer
-
- Logic layer (Backend): where Django REST would be used to connect to information sources and process it, connected to the persistence layer
-
- Persistence layer (Database): We would use dbsqlite3 provided by Django, which stores information from the data access layer and the logic layer, as well as providing responses to the logic layer
-
- Data access layer: Where we would use everything that can provide us with information, such as APIs with AI, web scraping, or the Google Trends API, connected to the persistence layer
Archivo.a.mp4.mp4
- See the presentation here