E-COMM POC

2 Squirrels AI

Technology Stack

AI Agent development projects featuring E-Commerce Customer Service with CrewAI RAG and LinkedIn Content Generation with Google ADK. Multi-agent orchestration for real-world business automation.

OrchestrationCrewAI + Google ADK
LLMGPT-4o-mini + Gemini
Vector DBChromaDB
EmbeddingsOpenAI text-embedding-3
Image GenStability AI SDXL

CrewAI Customer Service Agents

🔍
Query Analyzer
Classify & Extract Intent
📚
Policy Retrieval
RAG Search + Eligibility
💬
Response Generator
Empathetic Response

Workflow 1: Customer Service Query Resolution

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117'}}}%%
flowchart LR
    subgraph Input["📥 CUSTOMER QUERY"]
        QUERY["💬 Raw Query"]
    end
    subgraph Agent1["🔍 QUERY ANALYZER"]
        CLASS["📋 Classify Request"]
        EXTRACT["🏷️ Extract Category"]
        TONE["😊 Detect Tone"]
    end
    subgraph Agent2["📚 POLICY RETRIEVAL"]
        RAG["🔎 RAG Search"]
        CHROMA[("🗄️ ChromaDB")]
        ELIG["✅ Eligibility Check"]
        SUM["📝 Summarize Policy"]
    end
    subgraph Agent3["💬 RESPONSE GENERATOR"]
        CRAFT["✍️ Craft Response"]
        STEPS["📋 Step-by-Step"]
    end
    subgraph Output["📤 OUTPUT"]
        RESP["💬 Customer Response"]
    end
    QUERY --> CLASS
    CLASS --> EXTRACT
    EXTRACT --> TONE
    TONE --> RAG
    RAG --> CHROMA
    CHROMA --> ELIG
    ELIG --> SUM
    SUM --> CRAFT
    CRAFT --> STEPS
    STEPS --> RESP
                

Workflow 2: RAG Document Ingestion Pipeline

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117'}}}%%
flowchart TB
    subgraph Input["📥 DOCUMENTS"]
        PDF["📄 PDF Files"]
        TXT["📝 TXT Files"]
        MD["📋 MD Files"]
    end
    subgraph Process["🔧 PROCESSING"]
        LOAD["📥 Load Documents"]
        CHUNK["✂️ RecursiveCharacterTextSplitter
1000 chars, 200 overlap"] end subgraph Embed["🧠 EMBEDDING"] EMB["🔢 text-embedding-3-small"] VEC["📊 Vector Embeddings"] end subgraph Store["💾 STORAGE"] CHROMA[("🗄️ ChromaDB
+ Metadata")] end PDF --> LOAD TXT --> LOAD MD --> LOAD LOAD --> CHUNK CHUNK --> EMB EMB --> VEC VEC --> CHROMA

Workflow 3: LinkedIn News Discovery

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117'}}}%%
flowchart LR
    subgraph Input["📥 TOPIC"]
        TOPIC["🤖 AI & ML Topic"]
    end
    subgraph Agent["🔍 NEWS RESEARCH AGENT"]
        SEARCH["🌐 Web Search"]
        FILTER["📰 Filter Sources
TechCrunch, ArXiv, VentureBeat"] CATEGORIZE["🏷️ Categorize
Launch, Research, Funding"] end subgraph Output["📤 RESULTS"] JSON["📄 JSON Array
Up to 5 Articles"] end TOPIC --> SEARCH SEARCH --> FILTER FILTER --> CATEGORIZE CATEGORIZE --> JSON

Workflow 4: LinkedIn Post Generation with Humor

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117'}}}%%
flowchart TB
    subgraph Input["📥 NEWS ARTICLE"]
        ARTICLE["📰 Article Data"]
    end
    subgraph Generate["✍️ POST GENERATOR"]
        HOOK["🎣 Hook"]
        CONTEXT["📝 Context"]
        INSIGHT["💡 Insight"]
        CTA["📢 Call-to-Action"]
    end
    subgraph Humanize["😄 HUMANIZER AGENT"]
        PERSONALITY["🎭 Add Personality"]
        HUMOR["😂 Inject Humor
Scale: 0-10"] TONE["💬 Conversational Tone"] end subgraph Loop["🔁 LOOP AGENT"] NEXT["📰 Next Article"] end subgraph Output["📤 OUTPUT"] POST["📝 LinkedIn Post
Max 1500 chars"] end ARTICLE --> HOOK HOOK --> CONTEXT CONTEXT --> INSIGHT INSIGHT --> CTA CTA --> PERSONALITY PERSONALITY --> HUMOR HUMOR --> TONE TONE --> POST POST --> NEXT NEXT --> ARTICLE

Workflow 5: AI Image Generation for Posts

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117'}}}%%
flowchart LR
    subgraph Input["📥 POST BODY"]
        TEXT["📝 LinkedIn Post"]
    end
    subgraph Prompt["🎨 IMAGE PROMPT AGENT"]
        ENGINEER["✨ Prompt Engineering
Style, Composition, Lighting"] end subgraph Generate["🖼️ IMAGE GENERATOR"] API["🔌 Replicate API"] SDXL["🎨 Stability AI SDXL"] POLL["🔄 Poll Completion
60x @ 2s intervals"] end subgraph Output["📤 RESULT"] URL["🔗 Image URL"] META["📋 Metadata"] end TEXT --> ENGINEER ENGINEER --> API API --> SDXL SDXL --> POLL POLL --> URL URL --> META

Workflow 6: Post Quality Evaluation & Batch Export

%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#C17852', 'primaryTextColor': '#F0F6FC', 'primaryBorderColor': '#4A5E32', 'lineColor': '#E6C98F', 'secondaryColor': '#161B22', 'tertiaryColor': '#0D1117'}}}%%
flowchart TB
    subgraph Input["📥 POST TEXT"]
        POST["📝 LinkedIn Post"]
    end
    subgraph Evaluate["📊 READABILITY EVALUATOR"]
        FLESCH["📈 Flesch Reading Ease
0-100"] SCALE["🎯 LinkedIn Scale
1-10"] ANALYZE["🔍 Sentence Complexity"] end subgraph Batch["💾 BATCH SAVE AGENT"] COMPILE["📦 Compile All Posts"] SAVE["💾 save_posts_to_json"] end subgraph Output["📤 EXPORT"] JSON[("📄 linkedin_posts_batch.json")] FIELDS["📋 URL, Title, Category
Body, Image, Score"] end POST --> FLESCH FLESCH --> SCALE SCALE --> ANALYZE ANALYZE --> COMPILE COMPILE --> SAVE SAVE --> JSON JSON --> FIELDS