Skip to content

Commit be9b263

Browse files
committed
marketing data analysis fix
1 parent 98038bf commit be9b263

File tree

4 files changed

+55
-43
lines changed

4 files changed

+55
-43
lines changed
Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,69 @@
1-
# AI Agent for Marketing Data Analysis
1+
# Agentic Marketing Analyser
22

33
## Summary
44

5-
This feature proposes the integration of an AI-powered agent that delivers location-specific marketing insights to help tour and activity operators understand what's working and what needs attention across their local digital channels. Powered by a Local Data Platform (LDP), the agent transforms raw marketing data into clear, actionable recommendations.
5+
This feature proposes the integration of an AI-powered agent that delivers location-specific marketing insights to help tour and activity operators understand whats working and what needs attention across their local digital channels. Powered by a Local Data Platform (LDP), the agent transforms raw marketing data into clear, actionable recommendations that drive bookings, visibility, and revenue.
66

77
## Problem It Solves
88

9-
Most small to mid-sized operators struggle to answer key questions:
9+
Most small to mid-sized tourism operators struggle with marketing decisions. Common pain points include:
1010

1111
- "Which campaigns are working in which locations?"
1212
- "What should I post next to drive more bookings?"
1313
- "Why are bookings slow this week despite good reviews?"
14-
- "Where should I spend my marketing effort or ad budget?"
14+
- "Where should I focus marketing budget or effort?"
1515

16-
They don’t have marketing teams they need a smart guide that understands local nuances and acts like a digital marketing brain.
16+
They lack in-house marketing teams. What they need is a smart, always-on guide that understands local trends and acts like a data-driven marketing assistant.
1717

1818
## Feature Summary
1919

2020
The AI agent will:
2121
- Aggregate social media, OTA, review, and campaign data.
22-
- Analyze performance by product, region, and timing.
23-
- Generate digestible insights with GPT-like natural language.
24-
- Recommend practical actions to improve visibility and bookings.
22+
- Analyze performance by product, region, season, and timing.
23+
- Generate insights in natural GPT-style language.
24+
- Recommend next best actions to improve visibility, conversions, and bookings.
2525

26-
## 📍 Plan: 6-Month Rollout
26+
## Rollout Plan: 6-Month Delivery
2727

2828
| Phase | Duration | Milestones |
2929
| :--- | :--- | :--- |
3030
| **Discovery & Planning** | 2 weeks | Source mapping, data schemas, risk planning |
31-
| **Core Infra Build** | 6 weeks | Pipelines, LDP engine setup |
32-
| **AI Layer + Prompt Engineering** | 6 weeks | Smart recommendation engine, tests |
33-
| **UI + Chatbot Integration** | 4 weeks | Dashboard surfaces + user interface |
34-
| **Pilot & Feedback Loop** | 3 weeks | Testing with real data from 3–5 cities |
35-
| **Launch & Handoff** | 2 weeks | Training, documentation, monitoring handover |
31+
| **Core Infrastructure Build** | 6 weeks | Pipeline development, LDP engine setup |
32+
| **AI Layer + Prompt Engineering** | 6 weeks | Smart recommendation engine, insight model tests |
33+
| **UI + Chatbot Integration** | 4 weeks | Marketing dashboard surfaces, chatbot responses |
34+
| **Pilot & Feedback Loop** | 3 weeks | Testing in 3–5 cities with live operator data |
35+
| **Launch & Handoff** | 2 weeks | Final training, documentation, and monitoring setup |
3636

37-
## 💰 Cloud Cost (Client Side)
37+
## Cloud & Infra Cost (Client-Side Estimate)
3838

3939
| Item | Estimated Allocation |
4040
| :--- | :--- |
41-
| Infra & Cloud Services (GPT-4 API, server infra, data storage) | ₹1.5–2 Cr |
41+
| Infra & Cloud Services (GPT-4 API, server infra, storage) | ₹1.5–2 Cr |
4242
| Security, DevOps, Monitoring | ₹0.75 Cr |
43-
| Contingency + Project Risk Buffer | ₹1.5 Cr |
43+
| Contingency + Risk Buffer | ₹1.5 Cr |
4444

4545
## Team Structure (10 Members)
4646

47-
| Role | Count | Responsibility |
47+
| Role | Count | Responsibilities |
4848
| :--- | :--- | :--- |
49-
| Data Engineers | 2 | API integration, pipeline design, ETL, enrichment |
50-
| Backend Engineers | 2 | Core infrastructure, LDP services, performance |
51-
| AI/ML Engineers | 2 | GPT prompt engineering, insight models, feedback loop |
52-
| Product Manager | 1 | Timeline, coordination, delivery |
53-
| Product Designer | 1 | UX for insight surfaces, dashboards, chatbot flow |
54-
| Frontend Engineers | 2 | Insight UI, integration with dashboard + chatbot |
49+
| Data Engineers | 2 | API integration, pipeline design, enrichment |
50+
| Backend Engineers | 2 | Core infra, LDP performance, uptime |
51+
| AI/ML Engineers | 2 | GPT prompt design, training, insight generation |
52+
| Product Manager | 1 | Roadmap, delivery, stakeholder alignment |
53+
| Product Designer | 1 | UX/UI for dashboards, insight cards, chatbot flow |
54+
| Frontend Engineers | 2 | Dashboard & chatbot UI integration |
5555

5656
## Why This Will Work for You
5757

58-
- **Unlock Your Data's Value:** You're sitting on a goldmine of booking and demand data — we’ll help unlock its value.
59-
- **Simple Pricing Tools:** Our system makes pricing as easy as editing a Google Doc, not learning complex Excel models.
60-
- **Data-Driven Decisions:** You’ll never guess the right price again — local demand, competition, and conversion trends will do it for you.
61-
- **Scalable Growth:** Designed to scale with your growth across cities, seasons, and customer types.
58+
- You're sitting on a goldmine of marketing and booking data — this platform unlocks its value.
59+
- AI makes local marketing insights human-readable and intuitive, not spreadsheet-heavy.
60+
- You’ll never have to guess the right channel, time, or campaign again.
61+
- Built to scale across cities, seasons, tours, and customer types.
62+
- Seamlessly integrates with your existing product ecosystem.
6263

63-
## Next Step
64+
## Next Step
6465

65-
> Let’s schedule a free 30-minute demo with your team.
66+
> Let’s schedule a free 30-minute discovery session with your team to:
67+
> - Walk through the use cases.
68+
> - Review how it can be embedded in your product.
69+
> - Map early adopters and go-to-market timeline.

mkdocs.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ repo_url: https://github.com/tusharchou/local-data-platform
66
repo_name: local-data-platform
77

88
nav:
9+
- Home: index.md
10+
- "About LDP": wiki/VISION.md
911
- Business Solution:
1012
- Business Problem: wiki/business/PROPOSAL.md
1113
- Marketing Data Analysis: wiki/business/MARKETING_DATA_ANALYSIS.md
12-
- Home: index.md
13-
- "About LDP": wiki/VISION.md
14-
- "Use Case":
1514
- "Photo Management": wiki/usecases/PHOTO_MANAGEMENT.md
1615
- "Conceptual Workflow":
1716
- "Photo Management": wiki/workflow/PHOTO_MANAGEMENT.md

src/local_data_platform/github/__init__.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,30 @@ def get_items(repo_owner: str, repo_name: str, state: str = "all") -> List[Item]
7272
except GitHubAPIError as e:
7373
print(e)
7474
return []
75-
76-
return [
77-
Item(
75+
76+
items = []
77+
for raw_item in raw_items:
78+
# Safely parse datetime strings
79+
created_at = datetime.fromisoformat(
80+
raw_item['created_at'].replace('Z', '+00:00')
81+
)
82+
closed_at = None
83+
if raw_item.get('closed_at'):
84+
closed_at = datetime.fromisoformat(
85+
raw_item['closed_at'].replace('Z', '+00:00')
86+
)
87+
88+
item = Item(
7889
number=raw_item['number'],
7990
title=raw_item['title'],
8091
author=raw_item['user']['login'],
8192
description=raw_item.get('body'),
82-
created_at=datetime.fromisoformat(raw_item['created_at'].replace('Z', '+00:00')),
83-
closed_at=datetime.fromisoformat(raw_item['closed_at'].replace('Z', '+00:00')) if raw_item.get('closed_at') else None,
93+
created_at=created_at,
94+
closed_at=closed_at,
8495
url=raw_item['html_url'],
8596
is_pr='pull_request' in raw_item,
8697
labels=[label['name'] for label in raw_item.get('labels', [])]
8798
)
88-
for raw_item in raw_items
89-
]
99+
items.append(item)
100+
101+
return items

tests/test_github.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
import pytest
21
import requests
32
from unittest.mock import patch, Mock
4-
from datetime import datetime
53
from local_data_platform.github import get_items, Item
6-
from local_data_platform.exceptions import GitHubAPIError
74

85
# Mock data representing a GitHub API response for one issue and one PR
96
MOCK_API_RESPONSE = [

0 commit comments

Comments
 (0)