Advisor / docs /superpowers /plans /simplified.md
ps1811's picture
Initial HF Space deployment
39b31c0
|
Raw
History Blame Contribute Delete
7.08 kB
# Ads Automation Hackathon Implementation Plan
> **For agentic workers:** REQUIRED: Use the `subagent-driven-development` agent (recommended) or `executing-plans` agent to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Build a Google Ads recommendation dashboard for a preschool that monitors campaign performance, generates AI-powered recommendations using MiniCPM5-1B, and allows a human to review, approve, or reject recommendations. Deploy as a Gradio app on a Hugging Face Space (CPU) with SQLite as the source of truth.
**Architecture:** Single Gradio application. Google Ads metrics are imported into SQLite. A deterministic rule engine identifies opportunities and issues. MiniCPM5 generates human-readable explanations for recommendations. Recommendations are displayed in a dashboard where users can approve or reject them. No automatic ad changes are performed.
**Tech Stack:** Python 3.10+, Gradio, SQLAlchemy, google-ads, pandas, llama-cpp-python, pytest, python-dotenv.
---
### Task 1: Scaffold Project Layout
**Files:**
* Create: `app/__init__.py`
* Create: `app/main.py`
* Create: `app/ads/connector.py`
* Create: `app/db/models.py`
* Create: `app/db/repo.py`
* Create: `app/recs/rules.py`
* Create: `app/recs/generate.py`
* Create: `app/models/llm.py`
* Create: `app/ui/dashboard.py`
* Create: `app/ui/recommendations.py`
* Create: `scripts/seed_demo.py`
* Create: `requirements.txt`
* Create: `README.md`
* [ ] Step 1: Create repository structure and install dependencies.
Requirements:
```text
gradio
sqlalchemy
google-ads
pandas
llama-cpp-python
pytest
python-dotenv
requests
```
Verify:
```bash
python -m venv .venv
pip install -r requirements.txt
```
Expected: all packages install successfully.
* [ ] Step 2: Verify imports.
```bash
python -c "import app; print('scaffold ok')"
```
Expected:
```text
scaffold ok
```
---
### Task 2: SQLite Models
**Files:**
* Modify: `app/db/models.py`
* Modify: `app/db/repo.py`
* [ ] Step 1: Create `Campaign` model.
Fields:
```python
id
google_campaign_id
name
budget
spend
clicks
impressions
ctr
leads
cpl
last_synced
```
* [ ] Step 2: Create `Recommendation` model.
Fields:
```python
id
campaign_id
recommendation_type
action
reason
status
created_at
```
Status values:
```text
Pending
Approved
Rejected
```
* [ ] Step 3: Create database initialization helper.
Verify:
```bash
python -c "from app.db.repo import init_db; init_db(); print('db ok')"
```
Expected:
```text
db ok
```
---
### Task 3: Google Ads Read-Only Connector
**Files:**
* Modify: `app/ads/connector.py`
* [ ] Step 1: Implement:
```python
list_campaigns()
```
Returns:
```python
[
{
"id": "...",
"name": "...",
"budget": ...
}
]
```
* [ ] Step 2: Implement:
```python
get_campaign_metrics()
```
Returns:
```python
[
{
"campaign_id": "...",
"spend": ...,
"clicks": ...,
"impressions": ...,
"ctr": ...,
"leads": ...,
"cpl": ...
}
]
```
* [ ] Step 3: Add mock tests for connector responses.
Expected:
```bash
$env:PYTHONPATH="."
pytest
```
passes.
---
### Task 4: Rule Engine
**Files:**
* Modify: `app/recs/rules.py`
* [ ] Step 1: Implement High CPL Rule.
Condition:
```text
CPL > Target CPL × 1.5
```
Recommendation:
```text
Reduce budget allocation
```
* [ ] Step 2: Implement Strong Campaign Rule.
Condition:
```text
CPL < Target CPL × 0.8
```
Recommendation:
```text
Increase budget allocation
```
* [ ] Step 3: Implement Low CTR Rule.
Condition:
```text
CTR < 2%
```
Recommendation:
```text
Review ad copy and keywords
```
* [ ] Step 4: Return structured recommendation objects.
Example:
```json
{
"campaign":"Preschool Search",
"type":"high_cpl",
"action":"reduce_budget"
}
```
---
### Task 5: MiniCPM5 Recommendation Generator
**Files:**
* Modify: `app/models/llm.py`
* Modify: `app/recs/generate.py`
* [ ] Step 1: Load MiniCPM5 GGUF using `llama-cpp-python`.
Implement:
```python
load_model()
```
* [ ] Step 2: Generate explanations from recommendation payloads.
Input:
```json
{
"campaign":"Preschool Search",
"cpl":42,
"target_cpl":20,
"action":"reduce_budget"
}
```
Output:
```text
This campaign's cost per lead is significantly above target. Consider reducing budget allocation until conversion efficiency improves.
```
* [ ] Step 3: Validate output and provide fallback text if model response fails.
* [ ] Step 4: Add mocked tests.
---
### Task 6: Dashboard UI
**Files:**
* Modify: `app/main.py`
* Modify: `app/ui/dashboard.py`
* Modify: `app/ui/recommendations.py`
* [ ] Step 1: Build Campaign Dashboard.
Display:
| Campaign | Spend | Leads | CPL | CTR |
| -------- | ----- | ----- | --- | --- |
* [ ] Step 2: Add dashboard summary cards.
Examples:
```text
Total Spend
Total Leads
Average CPL
Active Campaigns
```
* [ ] Step 3: Add Recommendations Page.
Display:
| Campaign | Recommendation | Status |
| -------- | -------------- | ------ |
* [ ] Step 4: Add Approve button.
Updates:
```text
Pending → Approved
```
* [ ] Step 5: Add Reject button.
Updates:
```text
Pending → Rejected
```
Verification:
```bash
python app/main.py
```
Expected:
Dashboard loads successfully.
---
### Task 7: Demo Data
**Files:**
* Modify: `scripts/seed_demo.py`
* [ ] Step 1: Generate sample campaigns.
Create:
```text
5 campaigns
```
* [ ] Step 2: Generate synthetic metrics.
Create:
```text
30 days of data
```
* [ ] Step 3: Generate recommendations.
Ensure dashboard always contains examples.
Verification:
```bash
python scripts/seed_demo.py
```
Expected:
Database populated with demo content.
---
### Task 8: End-to-End Testing
**Files:**
* Create: `tests/test_e2e.py`
* [ ] Step 1: Seed demo data.
* [ ] Step 2: Run rule engine.
* [ ] Step 3: Generate MiniCPM explanations using mocked model.
* [ ] Step 4: Verify recommendations appear in database.
Expected:
```bash
pytest
```
passes.
---
### Task 9: Hugging Face Space Deployment
**Files:**
* Modify: `README.md`
* Modify: `requirements.txt`
* [ ] Step 1: Add deployment instructions.
* [ ] Step 2: Document model download procedure.
* [ ] Step 3: Document local development workflow.
Example:
```bash
pip install -r requirements.txt
python scripts/seed_demo.py
python app/main.py
```
Expected:
Developer can run locally and deploy to HF Spaces.
---
## Self-Review Checklist
1. Google Ads metrics can be viewed.
2. Rule engine generates recommendations.
3. MiniCPM generates explanations.
4. Recommendations can be approved/rejected.
5. Dashboard works with seeded demo data.
6. No automatic campaign modifications.
7. No scheduler required.
8. No Google Sheets integration required.
9. Deployable on Hugging Face Spaces.
---
## Handoff / Execution Choices
Plan complete. Two execution options:
1. Subagent-Driven (recommended) — run `subagent-driven-development` task-by-task.
2. Inline Execution — implement tasks sequentially in a single session.
Recommended for hackathon: **subagent-driven-development**.