AI Social Media Agent — Capstone Project Plan

IIT Bombay · e-PG Diploma in AI & DS · April 18 – May 17, 2026


Team Assignments

Member What They Own
Abhinav LangChain pipeline, 5-variant generation, few-shot library, chain-of-thought, RAG integration, optimizer loop, LLM evaluation
Shreyas Dataset sourcing, basic data cleaning, FAISS RAG pipeline, Reddit PRAW trending retrieval, end-to-end integration, presentation deck
Khushee Deep data cleaning, feature engineering, XGBoost training, hyperparameter tuning, feature importance analysis
Manas EDA, posting-time recommender, unit + integration tests, model validation, validation charts
Aditya Streamlit app, live pipeline connection, engagement visualizations, demo video

Week 1 — Apr 18–24 · Setup & Foundation

Goal: Individual groundwork. No integration yet. Everyone sets up their environment and begins their domain independently before any cross-module work begins.

Member Tasks
Abhinav Set up GitHub repo and shared Python environment for the team. Obtain API keys for Anthropic and OpenAI — confirm both work with a simple test call. Read LangChain documentation thoroughly and run the first successful LLM call. Write base prompt templates for Twitter, Instagram, and LinkedIn capturing each platform's tone and length norms. Research few-shot prompting and chain-of-thought techniques — collect 5–6 strong post examples per platform.
Shreyas Source and download all datasets — Kaggle Instagram engagement, Kaggle Twitter engagement, Kaggle sentiment, HuggingFace social media posts. Register Reddit developer account, set up PRAW, confirm trending topic pulls work with a test query. Write 3 sample brand guideline documents with distinct tones: professional (B2B SaaS), casual (D2C consumer), playful (lifestyle/food). Perform basic data cleaning: fix data types, handle nulls, apply log-transform to the engagement target variable.
Khushee Explore all dataset schemas in detail. Document every column — its meaning, value range, null rate, and data type. Identify outlier patterns in engagement numbers across platforms. Understand the engagement target variable distribution — is it normal, skewed, or bimodal? Prepare a short EDA summary to share with Manas before Week 2 begins.
Manas Independent EDA focused on the engagement target variable — plot distribution per platform. Analyze engagement vs posting hour, day of week, hashtag count, and caption length. Identify the top features correlating with engagement. Define the evaluation metric: RMSE on log-transformed engagement. Design the posting-time recommender approach based on EDA findings.
Aditya Research Streamlit vs Gradio — test a hello-world app in both and document the decision rationale. Wireframe 3 screens: (1) brand + topic input form with platform selector and tone dropdown, (2) output panel showing 5 variants with predicted scores, (3) engagement metrics view with charts. Set up the Streamlit project skeleton with navigation between screens.

Week 2 — Apr 25 – May 1 · Core Build

Hard milestone: Abhinav must deliver structured JSON output by May 1. If this slips, the entire team's integration in Week 3 is blocked.

Member Tasks
Abhinav Build the full LangChain chain: user input → prompt assembly → LLM call → structured JSON output. Implement 5-variant generation in a single API call — the prompt explicitly requests 5 structurally distinct variants. Validate that output JSON consistently contains post_text, hashtags, tone, and suggested_posting_time fields. Build the few-shot example library — 5–6 high-quality examples per platform covering different topics and brand tones. Milestone: clean, parseable JSON output reliably working by May 1.
Shreyas Chunk brand guideline documents into 300–500 token segments with 50-token overlap. Embed all chunks using text-embedding-3-small. Store embeddings in a local FAISS index. Build and test the retrieval function: given a topic query, return top-k most relevant brand guideline chunks. Test across all 3 brand profiles and multiple topic queries to validate retrieval quality.
Khushee Deep data cleaning: handle outliers (cap or remove extreme values), apply platform-specific filtering to remove bots and spam patterns. Engineer features: posting hour, day of week, caption character length, hashtag count, VADER sentiment score, has-CTA boolean flag. Deliver the clean, feature-engineered dataset to Manas by April 30.
Manas Train baseline XGBoost engagement predictor on Khushee's cleaned features using a chronological train/test split — earlier posts train, later posts test. Run hyperparameter tuning on XGBoost. Evaluate using RMSE on log-transformed engagement. Iterate on feature selection using XGBoost feature importance scores. Build the posting-time recommender: segment Kaggle data by platform, calculate mean engagement by hour and day, expose as a clean get_best_posting_time(platform) function returning optimal hour and day.
Aditya Build the UI input form: brand name field, topic field, platform selector (Twitter/Instagram/LinkedIn), tone dropdown. Build the output panel showing 5 post variant cards with placeholder engagement scores. Connect all components to mock/hardcoded data so the UI is fully navigable end-to-end.

Week 3 — May 2–8 · Integration

Goal: All modules are wired together. Every dependency surfaces this week. A fully functioning end-to-end pipeline by May 8.

Member Tasks
Abhinav Receive RAG retrieval module from Shreyas. Integrate brand context chunks into the prompt at the correct position. Receive trending topics module from Shreyas. Integrate top 3 trending subtopics into the prompt. Full prompt is now: system instructions + brand guideline chunks + trending topics + platform rules + few-shot examples + user input. Experiment with chain-of-thought instruction phrasing to improve brand voice coherence. Build the optimizer loop: receive 5 scored variants, rank by predicted engagement score, flag top variant as recommended. Expose as optimize_variants(variants) -> ranked_list.
Shreyas Connect Reddit PRAW trending retrieval to the pipeline. Apply relevance filter — keyword overlap scoring — return only top 3 relevant topics. Write unit tests for RAG retrieval (does it return relevant chunks?) and trending retrieval (does it filter correctly?). Full integration of both retrieval modules with Abhinav's pipeline — confirm the assembled prompt is correct end-to-end.
Khushee Iterate on features based on model performance feedback from Manas. Run feature importance analysis — identify top 5 predictive features per platform. Save trained XGBoost model as a .pkl file. Write a clean predict_engagement(features_dict) -> score wrapper function for Abhinav to use in the optimizer loop.
Manas Write unit tests for all modules: RAG retrieval, trending retrieval, LangChain pipeline, engagement predictor, optimizer loop. Integration testing as each module comes online — test every connection point as it becomes available. Flag bugs to the relevant owner immediately with a clear description of the failing case.
Aditya Connect Streamlit UI to the live pipeline. Display real predicted engagement scores on each of the 5 variant cards. Highlight the recommended (highest-scoring) variant visually with a distinct card treatment. Pull and display posting-time suggestion from Manas's recommender per platform.

Week 4 — May 9–15 · Polish & Validation