Inspiration
What it does
Meet Priya.
Priya is a senior brand manager at Nykaa. Every Monday morning she opens 14 browser tabs — Instagram, X, Google Trends, three competitor feeds, two agency Slack channels — and spends three hours manually figuring out which hashtag is trending, whether Mamaearth just posted something Nykaa should respond to, and what the creative brief for this week's reel should say.
By Wednesday, the brief is ready. By Friday, it's reviewed. The video shoots the following week. By the time Nykaa's content goes live, the trend has peaked, the competitor has already captured the conversation, and Priya is back at her 14 tabs starting over.
BrandPulse gives Priya her Monday mornings back. The moment a trend spikes, the pipeline fires, a competitor gap is detected, three campaign options are drafted by Llama 3, and — on Priya's single click of Approve — a real Instagram-ready video reel is generated and logged. Total time from trend to video: under 10 minutes.
Architecture
Social APIs
│
▼
[Auto Loader — Spark Structured Streaming]
│ JSON batches land in BRONZE_PATH
▼
Bronze Delta Table ← @dlt.expect quality gates
(raw_social_posts)
│
▼
[DLT Pipeline — Silver transform]
• explode hashtags • engagement_rate
• sentiment UDF • hour_of_day
│
▼
Silver Delta Table
(cleaned_trend_metrics)
│
▼
[DLT Pipeline — Gold aggregation]
• competitor_dominance • brand_fit_score
• opportunity_gap • trend_velocity
│
▼
Gold Delta Table
(brand_insights)
│
├──────────────────────────────────────────┐
▼ ▼
[Spark ML Job] [Mosaic AI — Llama 3]
TF-IDF + KMeans Reads Gold + Gaps
Competitor gap clusters Generates 3 captions
MLflow tracked + image prompts
│ │
▼ ▼
Gaps Delta Table Suggestions Delta Table
(competitor_gaps) (content_suggestions)
│
▼
[Databricks App — Dash]
Human-in-the-loop UI
Approve / Tweak / Reject
│
(on Approve)
▼
[fal.ai Veo3 API]
6-second video reel
generated async
│
▼
Video URL → Delta Table
│
▼
App shows live video player
Databricks Features — Why Each One Is Essential
| Databricks Feature | Why it's essential (not just what it does) |
|---|---|
| Delta Lake | Every table — Bronze, Silver, Gold, Gaps, Suggestions — uses Delta format. ACID transactions mean the App and the ML job read consistent snapshots simultaneously without locking. Time travel lets judges replay any historical state. |
| Delta Live Tables (DLT) | Declarative Bronze → Silver → Gold pipeline with @dlt.expect data quality enforcement. DLT handles incremental processing, retries, and lineage automatically — no custom orchestration code needed. |
| Spark Structured Streaming | Auto Loader (cloudFiles) ingests JSON batches from object storage with exactly-once semantics. read_stream propagates micro-batch processing end-to-end from Bronze through Silver so every new social post flows through enrichment in real time. |
| Spark ML | KMeans + TF-IDF pipeline runs natively on Delta DataFrames — no data movement, no serialisation overhead. Scales to millions of posts without code changes. The Pipeline API chains all transforms into a single reusable, MLflow-loggable artifact. |
| MLflow | Every ML run, every Mosaic AI call, every human approval and rejection is tracked. Judges can browse the Experiment UI and see the full decision trail — making BrandPulse auditable and reproducible, not a black box. |
| Mosaic AI Model Serving | Llama 3 runs inside the Databricks security perimeter — brand data never leaves the workspace. The endpoint auto-scales to zero between demo runs, costs nothing idle, and is governed by workspace IAM. |
| Databricks Apps (Dash) | The UI runs inside Databricks — it calls spark.sql() directly on Delta tables without an external backend, API layer, or egress cost. Workspace IAM governs who can approve content. |
| Unity Catalog | All Delta tables are registered in the brandpulse database, making them discoverable, governable, and shareable across the workspace without path management. |
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for brandpluse
Built With
- databrick
- python
Log in or sign up for Devpost to join the conversation.