Nenufar is an intelligent marketing automation system for Colombian Ancestral Jewelry. It follows a Brain-Arms pattern: OpenClaw (Luna) handles creative decisions and n8n executes publishing, image processing, and analytics.
flowchart TD
subgraph User["User — Shirley"]
U1["Uploads photos/videos\nto Google Drive"]
U2["Receives preview\nvia Telegram"]
U3{{"APPROVE / MODIFY / CANCEL"}}
end
subgraph Brain["Brain — OpenClaw (Luna)"]
B1["Analyzes new content\nin Google Drive"]
B2["Queries templates bank\n(Supabase)"]
B3["Trend scraping\n(Firecrawl + Graph API)"]
B4["Generates optimized copy\n+ hashtags"]
B5["Sends preview via Telegram"]
B6["Dispatches task to n8n\n(Webhook)"]
end
subgraph Arms["Arms — n8n Workers"]
A1["Retrieves media\nfrom Google Drive"]
A2["Converts image\nFB: 1080x1080 / IG: 1080x1350"]
A3["Applies Nenufar watermark"]
A4["Publishes on Facebook + Instagram"]
A5["Logs analytics in Supabase"]
A6["Notifies user via Telegram"]
end
U1 --> B1
B1 --> B2
B2 --> B3
B3 --> B4
B4 --> B5
B5 --> U2
U2 --> U3
U3 -- "Approve" --> B6
B6 --> A1
A1 --> A2
A2 --> A3
A3 --> A4
A4 --> A5
A5 --> A6
A6 -.->|Done| U2
| Layer | Technology | Purpose |
|---|---|---|
| Brain | OpenClaw (Luna) | AI agent with eco-poetic voice |
| LLM | Gemini 1.5 Flash | Content generation + intent classification |
| Templates | Supabase / Markdown | Brand knowledge & pre-defined copy |
| Interface | Telegram Bot | Human-in-the-loop approval |
| Broker | Direct HMAC Webhook | Task dispatch between Brain and Arms |
| Workers | n8n (GCP e2-micro) | Lightweight routing, publishing, logging |
| Media | Oracle Cloud (ARM A1) | Heavy image/video processing (Sharp + ffmpeg) |
| Database | Supabase PostgreSQL | Long-term memory + analytics |
| Assets | Google Drive | Media storage |
| Publishing | Meta Graph API | Instagram + Facebook |
| Epic | Description | Status |
|---|---|---|
| ip-001 | Infrastructure Setup | Completed |
| ip-002 | Brain — OpenClaw (Luna) + Telegram | In Progress |
| ip-003 | Arms — n8n Workers | In Progress |
| ip-004 | Integration Testing | Pending |
| ip-005 | Production Launch | Pending |
| ip-006 | Supabase Improvements | Completed |
The system uses a Templates Bank to ensure all copy is on-brand and optimized for token usage:
- Verified template structures in Supabase for:
- Product storytelling
- Artisan heritage narratives
- Collection launches
- Educational content on materials/techniques
- Prevents: Generic generation and hallucination
CREATE TABLE nenufar.templates_bank (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
template_id TEXT UNIQUE NOT NULL,
category TEXT NOT NULL, -- story, product, engagement, fallback
content TEXT NOT NULL, -- Template with {{variables}}
variables TEXT[],
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);| Tool | Purpose |
|---|---|
| Firecrawl | Extract trends from competitors and jewelry niche |
| Graph API | Analyze top-performing posts in the niche |
| Platform | Format | Watermark | Timing |
|---|---|---|---|
| Facebook Feed | 1080x1080 (square) | Bottom right, 15% opacity | 9am-11am, 7pm-9pm |
| Instagram Feed | 1080x1350 (portrait) | Bottom right, 15% opacity | 9am-11am, 7pm-9pm |
| Instagram Stories | 1080x1920 (vertical) | Animated, corner | 24h cycle |
| Reels | 1080x1920 (vertical) | Subtle, non-intrusive | Trending audio |
LobsterMarketing/
├── README.md # This file
├── CONTRIBUTING.md # Contribution guidelines
├── .env.production # Production environment vars
├── package.json # Root dependencies
│
├── agent_context/ # Agent identity & configuration
│ ├── AGENTS.md # Agent workspace guide
│ ├── SOUL.md # Agent personality & voice
│ ├── IDENTITY.md # Agent identity
│ ├── USER.md # User profile (Shirley)
│ ├── TOOLS.md # Local tool notes
│ ├── HEARTBEAT.md # Heartbeat configuration
│ ├── GEMINI.md # Gemini model config
│ ├── TESTING_GUIDE.md # Testing instructions
│ ├── openclaw_system_prompt.txt # OpenClaw system prompt
│ └── agent_prompts.md # Agent prompt templates
│
├── database/ # Database schema
│ └── database_schema.sql # Full Supabase SQL schema
│
├── deployments/ # Deployment scripts
│ ├── deploy_oracle.sh # Oracle Cloud deploy script
│ ├── n8n/ # n8n deployment config
│ └── openclaw-server/ # OpenClaw server deployment
│
├── media-processor/ # Image/video processing service (TypeScript)
│ ├── server.ts # Media processing server
│ ├── tsconfig.json # TypeScript configuration
│ └── package.json # Dependencies & scripts
│
├── specs/ # Technical & brand specifications
│ ├── architecture/ # Architecture docs
│ ├── adrs/ # Architecture Decision Records
│ ├── implementation_plan/ # Implementation plans
│ ├── tests/ # Test specs
│ ├── templates_bank.md # Templates bank documentation
│ ├── brand_essence.md # Brand voice & identity
│ ├── data_architecture.md # Data model design
│ ├── media_processor_api.md # Media API specification
│ └── *.md # Other specs
│
├── workflows/ # n8n workflow JSON exports
│ ├── caption-approval-pipeline.json
│ ├── caption-callback-handler.json
│ ├── caption-preview-sender.json
│ ├── heartbeat-drive-monitor.json
│ └── video-callback-handler.json
│
└── memory/ # Agent long-term memory
└── MEMORY.md # Persistent memory log
- Tone: Eco-poetic, close, professional
- Language: Colombian Spanish, always "tu"
- Narrative: "Poemas tejidos" — each piece is a poem
Nenufar contigo - Tejiendo esperanzas - Tejiendo caminos - Punzadas de amor - Arte hecho a mano - Poemas tejidos - Gajes del oficio
| Day | Theme | Focus |
|---|---|---|
| Monday | Tejiendo Caminos | Social impact, artisan mothers |
| Tuesday | Poemas Tejidos | Storytelling of a specific piece |
| Wednesday | Gajes del Oficio | Weaving process & techniques |
| Thursday | Universo Infantil | Kids & minimalist accessories |
| Friday | Naturaleza y Espiritu | Spirituality & meaningful designs |
| Saturday | Cultura en Movimiento | Clients at cultural events in Cartagena |
| Sunday | Reflexion y Color | Color meanings & weekly energy |
Built for Nenufar — Colombian Ancestral Jewelry
"Each piece carries a story. Our mission is to ensure that story is told well."