From 55a10afff9a321802d56180dbf5826fb7614ee7d Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 22:06:51 +0530 Subject: [PATCH 01/13] updated solutions --- GenAI.md | 527 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 523 insertions(+), 4 deletions(-) diff --git a/GenAI.md b/GenAI.md index 3c1fd31b..7c5107cc 100644 --- a/GenAI.md +++ b/GenAI.md @@ -26,7 +26,348 @@ No code required. We want a **clear, practical proposal** with architecture and ### Your Solution for problem 1: -You need to put your solution here. +# Architectural Proposal: Automated Video-to-Notes Platform + +## 1. Introduction: The Video Information Bottleneck +The modern digital enterprise and educational landscapes have undergone a seismic shift in information storage, moving from structured text documents to unstructured audio-visual assets. Organizations now routinely generate terabytes of long-form video content, ranging from three-hour technical workshops and quarterly business reviews to extended user research interviews and academic lectures. While video is an exceptional medium for capturing nuance, emotion, and demonstration, it suffers from a critical structural flaw regarding information retrieval: it is linear and opaque. Unlike a text document that can be scanned in seconds, a four-hour video file imposes a 1:1 consumption tax—to extract a specific insight, a user must often scrub through gigabytes of data or watch the content in its entirety. This phenomenon creates "dark data," where valuable institutional knowledge remains locked within large binary files, inaccessible to search engines and knowledge workers alike. + +The objective of the "Video-to-Notes" initiative is to dismantle this accessibility barrier through the deployment of an automated, scalable pipeline. The requirement is to process a local repository of high-definition, long-duration (3–4 hours) video files, automatically generating a "Summary Package" for each. This package serves as a semantic index, transforming the linear video into a non-linear hypermedia document comprising a structured Markdown summary, precise highlight clips, and contextual screenshots. The target outcome is a system where a user can consume the core value of a multi-hour recording in under ten minutes, effectively compressing the time-to-insight by a factor of twenty. + +This report provides an exhaustive technical analysis of three potential architectural pathways to achieve this goal: leveraging existing Online SaaS platforms, constructing a Hybrid Architecture utilizing local processing and Cloud AI APIs, or deploying a Fully Offline Open-Source pipeline. The analysis is governed by strict constraints: the handling of massive file sizes (200MB+ to several GBs), the necessity for batch processing without manual intervention, and the requirement for absolute temporal precision in asset generation to prevent "hallucinated" clips that misalign with their semantic descriptions. + +### 1.1 The Physics of Data and Constraint Analysis +The specific constraints of this project—files located locally, large file sizes, and extended durations—dictate the architectural viability of any proposed solution. The fundamental physics of data transfer plays a defining role. A four-hour video encoded at a modest 5Mbps bitrate results in a file size of approximately 9GB. Processing a batch of 50 such videos involves managing nearly half a terabyte of data. + +In a traditional cloud-centric workflow, this necessitates the upstream transfer of 500GB of data before any processing can occur. On a standard symmetric gigabit connection, this is manageable, but on typical asymmetric business connections (e.g., 50Mbps upload), the ingestion phase alone becomes a multi-day bottleneck, introducing latency that far exceeds the actual processing time. Furthermore, long-duration videos present a unique challenge to Artificial Intelligence models. A four-hour transcript contains between 30,000 and 45,000 tokens. Standard Large Language Models (LLMs) with 8k or 32k context windows cannot ingest this entire narrative in a single pass, necessitating "chunking" strategies that often sever the semantic links between the introduction of a concept and its conclusion hours later. + +Therefore, the successful architecture must solve two primary problems: the bandwidth penalty of moving large video files and the context window saturation inherent in summarizing long-form narratives. + +## 2. Comparative Architectural Analysis +We evaluated three distinct approaches against the core success criteria: clarity of architecture, handling of bulk constraints, and the precision of the output assets. + +```mermaid +graph TD + subgraph Approach 1: SaaS + A1[Local Video Folder] --> B1[Upload Full Video] + B1 --> C1[Cloud SaaS Platform] + C1 --> D1[Summary + Clips] + D1 --> E1[Download Results] + end + + subgraph Approach 2: Hybrid + A2[Local Video] --> B2[Audio Extraction FFmpeg] + B2 --> C2[Upload Audio Only] + C2 --> D2[Cloud STT Deepgram] + D2 --> E2[Cloud LLM Claude/GPT] + E2 --> F2[Structured JSON] + F2 --> G2[Local FFmpeg] + A2 --> G2 + G2 --> H2[Clips + Screenshots + Summary.md] + end + + subgraph Approach 3: Offline + A3[Local Video] --> B3[Local STT Whisper] + B3 --> C3[Local LLM Llama] + C3 --> D3[JSON Output] + D3 --> E3[Local FFmpeg] + A3 --> E3 + E3 --> F3[Assets + Summary] + end +``` + +### 2.1 Approach 1: Online/Cloud-Based SaaS Solutions +**Market Segment**: AI Video Repurposing Platforms (e.g., Pictory, Exemplary.ai, ScreenApp) + +The first approach examines the viability of "buying" rather than "building." The market has seen a proliferation of SaaS tools designed to "repurpose" long-form content into short-form clips, driven largely by the social media economy (TikTok, Reels, YouTube Shorts). These platforms typically offer a web-based interface where users upload videos, and the system automatically generates transcripts, summaries, and clips. + +#### 2.1.1 Architectural Limitations for Long-Form Archival +While these tools offer low initial friction, their underlying architecture is fundamentally misaligned with the "Video-to-Notes" requirements. The primary misalignment is the **Business Logic of Virality vs. Utility**. Platforms like Pictory and Exemplary.ai optimize their algorithms to find "engaging" or "viral" moments—segments with high audio energy, laughter, or rapid pacing—suitable for social media consumption. The "Video-to-Notes" project, conversely, requires the extraction of "informational" highlights—technical diagrams, strategic decisions, or action items—which may be delivered in a monotone voice or during quiet deliberation. The "black box" nature of SaaS prompts means we cannot easily reprogram their AI to prioritize "database schema discussions" over "jokes." + +#### 2.1.2 The Throughput and Duration Wall +The most fatal flaw for this specific use case is the **Duration Limit**. Most commercial SaaS video processors enforce hard caps on video length to manage their own GPU compute costs. ScreenApp, for example, limits Business Plan users to 3 hours per video. A 3-hour and 15-minute lecture would trigger a processing failure or require the user to manually split the file using video editing software before upload. This manual intervention violates the "batch mode" constraint, transforming an automated pipeline into a labor-intensive project. + +Furthermore, the **Upload Bottleneck** remains unresolved. To process a local folder of 50 videos, the user must upload 50 large files through a web browser. Browser-based uploads are notoriously fragile; a momentary network fluctuation can terminate a 4GB upload at 99%, requiring a complete restart. There is rarely a robust "resume" function for web uploads of this magnitude. Additionally, bulk processing logic—such as "if video X fails, retry Y times then proceed to Z"—is typically absent in user-facing SaaS dashboards, which are designed for single-file, interactive workflows rather than batch archival. + +#### 2.1.3 Cost Implications +The pricing models of these platforms are ill-suited for bulk archival. Exemplary.ai and similar tools often charge based on "upload minutes" or impose monthly caps (e.g., 300 minutes per month). Processing a single batch of ten 4-hour videos (2,400 minutes) would instantly exceed the quota of even "Pro" tiers, forcing the organization into "Enterprise" pricing negotiations. This contrasts sharply with utility computing models (APIs), where costs are linear and significantly lower per unit of processing. + +**Verdict: Rejected.** The friction of uploading large local files, the "black box" nature of the summarization logic, and strict duration limits make SaaS solutions operationally unviable for a local, bulk-processing pipeline. + +### 2.2 Approach 2: Hybrid Architecture (Local Processing + Cloud AI) +**Stack**: Local Python Orchestrator, FFmpeg, Deepgram API, Anthropic/OpenAI API + +The Hybrid Architecture represents a strategic decoupling of "Heavy Lifting" (media manipulation) from "Heavy Thinking" (semantic analysis). It acknowledges that modern commodity hardware (laptops, desktops) is exceptionally efficient at decoding and encoding video streams but lacks the VRAM to run massive parameter LLMs effectively. Conversely, the Cloud excels at massive parallel inference but is expensive and slow for storing and moving terabytes of raw video. + +#### 2.2.1 Architectural Blueprint +The data flow in the Hybrid model is designed to minimize bandwidth usage while maximizing intelligence: + +1. **Local Ingestion**: A Python script scans the local directory. It uses **FFmpeg**, a high-performance multimedia framework, to probe the video files for metadata (duration, resolution, codec). +2. **Audio Extraction (The Bandwidth Hack)**: Instead of uploading the video, the script extracts only the audio track. Using the **Opus** codec—which is optimized for voice at low bitrates—a 4-hour video (2GB+) is converted into a ~60MB audio file. This reduction in data transfer (approx. 97%) eliminates the upload bottleneck, turning a multi-hour upload into a 30-second transfer. +3. **Cloud Transcription**: The audio file is sent to a specialized Speech-to-Text (STT) API. **Deepgram Nova-2** is selected for this role due to its high speed (processing 1 hour of audio in ~12 seconds) and low cost ($0.0043/min) compared to competitors like OpenAI Whisper API ($0.006/min). Crucially, the API is requested to return **word-level timestamps**, providing the temporal scaffolding necessary for precise clip cutting later. +4. **Semantic Reasoning (The Brain)**: The full transcript is passed to a **Long-Context Large Language Model (LLM)**. Models such as **Claude 3.5 Sonnet** or **Gemini 1.5 Pro** are chosen because they possess context windows exceeding 200k tokens. This allows the model to "read" the entire 4-hour transcript in one go, enabling it to synthesize a coherent executive summary and identify key moments based on the global context of the discussion, rather than analyzing fragmented chunks. +5. **Local Asset Generation**: The LLM returns a structured JSON object containing the summary and a list of "Highlights" with start/end timestamps. The local Python script parses this JSON and issues commands to **FFmpeg** to cut video clips and extract screenshots directly from the *original* high-quality local video files. + +#### 2.2.2 Advantages of the Hybrid Approach +This architecture offers the **Optimal Quality-to-Cost Ratio**. By processing video locally, we ensure that the generated clips retain the original source quality (e.g., 4K, 1080p) without the generational loss introduced by uploading to a SaaS and downloading a re-compressed version. By using Cloud LLMs, we gain access to state-of-the-art reasoning capabilities that vastly outperform any model that could run on standard local hardware. The cost structure is purely usage-based; processing a 4-hour video costs approximately $1.00 for transcription and $0.50 for intelligence, totaling ~$1.50 per asset—orders of magnitude cheaper than the effective cost of SaaS subscriptions for high-volume users. + +**Verdict: Recommended.** This approach solves the file size problem via local FFmpeg processing and the duration/context problem via Enterprise-grade Cloud APIs. + +### 2.3 Approach 3: Fully Offline (Open Source Pipeline) +**Stack**: Faster-Whisper, Llama 3 (70B), Local GPU + +The third approach explores total autonomy: running the transcription and summarization stack entirely on local hardware. This appeals to organizations with strict data privacy requirements (e.g., HIPAA, GDPR, NDA content) where no data can leave the premise. + +#### 2.3.1 Hardware and Performance Reality +The feasibility of this approach hinges entirely on available hardware. Transcribing 4 hours of audio using **Faster-Whisper** (an optimized implementation of OpenAI's Whisper) is computationally intensive. On a standard CPU, this could take longer than the video duration itself. On a consumer GPU (e.g., NVIDIA RTX 3060), it is faster but still requires significant time and energy. + +The greater challenge lies in the **Intelligence Layer**. To achieve a summary quality comparable to Claude 3.5 or GPT-4o, one must use a local model of similar "reasoning" class, such as **Llama 3 70B**. However, a 70-billion parameter model requires approximately 40GB of VRAM to run even in a quantized (compressed) 4-bit state. This exceeds the capacity of even the most powerful consumer card (RTX 4090, 24GB). Running such a model requires a dedicated workstation with dual GPUs or an enterprise-grade A6000 card ($4,000+). + +Using smaller models (e.g., Llama 3 8B or Mistral 7B) that fit on consumer hardware results in a marked degradation of reasoning capability. Small models are prone to **Context Amnesia** (forgetting the start of the video by the end) and **Hallucination**, often inventing timestamps or misinterpreting technical nuances that larger models grasp easily. + +#### 2.3.2 Operational Complexity +The "Map-Reduce" problem is acute here. Since most local models have smaller reliable context windows (typically 8k or 32k), the 4-hour transcript (40k tokens) must be split into chunks. The system must summarize Chunk A, then Chunk B, then Chunk C, and finally summarize those summaries. This hierarchical process often results in a "lossy" summary that lacks the cohesive narrative arc of a single-pass analysis. Additionally, local pipelines are prone to **Out-Of-Memory (OOM)** crashes when processing exceptionally long files, requiring complex engineering to handle memory paging and garbage collection. + +**Verdict: Viable only with High-End Hardware.** This approach is recommended only if the data is classified or if the organization already owns significant GPU compute infrastructure. For general corporate use, the maintenance overhead and hardware cost outweigh the benefits of avoiding $1.50 per video in API fees. + +## 3. Detailed Solution Design: The Hybrid Engine +Based on the comparative analysis, the **Hybrid Architecture** is selected as the robust solution. This section details the technical specifications, data schemas, and prompt engineering required to build the "Video-to-Notes" engine. + +### 3.1 System Architecture and Data Flow +The system operates as a linear pipeline, orchestrated by a Python controller. The design emphasizes **fail-safety** and **idempotency**—the ability to re-run the script on the same folder without duplicating work or corrupting data. + +```mermaid +graph TD + subgraph "Phase 1: Ingestion" + Start([Start Batch]) --> Scan[Scan Input Folder] + Scan --> Check{Valid File?} + Check -- No --> LogError[Log to skipped.csv] + Check -- Yes --> FFprobe[Extract Metadata] + end + + subgraph "Phase 2: Audio Extraction" + FFprobe --> Extract[FFmpeg: Extract Opus Audio] + Extract --> AudioFile(output_audio.opus) + end + + subgraph "Phase 3: Transcription" + AudioFile --> Deepgram[Deepgram API] + Deepgram --> Transcript[JSON Transcript + Timestamps] + end + + subgraph "Phase 4: Intelligence" + Transcript --> LLM[Claude 3.5 Sonnet] + LLM --> Analysis[JSON Summary + Highlights] + end + + subgraph "Phase 5 & 6: Production" + Analysis --> Cut[FFmpeg: Cut Clips] + Analysis --> Snap[FFmpeg: Screenshots] + Cut --> Assets[Assets Folder] + Snap --> Assets + Assets --> Assemble[Generate Summary.md] + end + + Assemble --> End([End Job]) +``` + +**Phase 1: Ingestion and Validation** +The script iterates through the target `input/videos/` directory. For each file, it performs a validity check using `ffprobe`. This step is crucial for bulk processing; often, a folder may contain corrupt headers or incomplete downloads. The system extracts the duration and resolution. If a file is invalid, it logs the error to a `skipped.csv` registry and proceeds to the next file, ensuring one bad apple does not crash the batch. + +**Phase 2: Bandwidth-Optimized Audio Extraction** +To bypass the 200MB+ upload constraint, the system extracts the audio track locally. +**Command**: `ffmpeg -i input_video.mp4 -vn -acodec libopus -b:a 64k -application voip output_audio.opus` +* `-vn`: Discard video. +* `-acodec libopus`: Use the Opus codec. Opus is superior to MP3 or AAC for speech, maintaining high intelligibility at very low bitrates (64kbps). +* `-application voip`: Optimizes the encoding for voice frequencies. +* **Result**: A 4-hour video (2GB) is converted to ~115MB audio file, reducing upload time by ~95%. + +**Phase 3: Transcription and Diarization** +The `output_audio.opus` is uploaded to the **Deepgram API**. +* **Model Selection**: `nova-2-general`. +* **Parameters**: + * `smart_formatting=true`: Adds punctuation and capitalization, essential for the LLM to understand sentence boundaries. + * `diarize=true`: Identifies different speakers (Speaker A, Speaker B). This adds context to the summary (e.g., "The Instructor asked..." vs "The Student answered..."). + * `paragraphs=true`: Groups text into logical blocks with timestamps. +* **Output**: A JSON response containing the full transcript and precise start and end timestamps for every word. + +**Phase 4: Intelligence and Reasoning (The LLM Layer)** +The transcript is packaged into a prompt and sent to **Claude 3.5 Sonnet** (or GPT-4o). This step is where the raw data is transmuted into intelligence. The "Context Window" of Claude 3.5 (200k tokens) allows it to hold the entire 4-hour dialogue in working memory. +* **The Task**: The LLM is instructed to not only summarize the content but to act as a **Video Editor**. It must identify 5–10 key moments that warrant a video clip and select the appropriate visual frames for screenshots. + +**Phase 5: Local Asset Production** +The Python script receives the JSON instructions from the LLM. It uses the highlights array to drive the local FFmpeg engine. +* **Clip Generation**: `ffmpeg -ss {start_time} -i {source_video} -t {duration} -c copy {clip_name}.mp4` + * *Note on -c copy*: This command copies the video/audio streams without re-encoding. It is instantaneous and lossless. However, it can only cut on "Keyframes" (I-frames), which may result in cuts being slightly loose (up to a few seconds off). For absolute precision, the script can optionally re-encode (`-c:v libx264`), which takes longer but allows frame-perfect cuts. For this proposal, we recommend **Smart Encoding**: check if the cut points are near keyframes; if not, re-encode only the first and last few seconds (rendition) and stream-copy the middle, or default to fast re-encoding (`-preset fast`) to ensure the clips start exactly where the speaker begins. +* **Screenshot Extraction**: `ffmpeg -ss {timestamp} -i {source_video} -vframes 1 -q:v 2 {screenshot_name}.jpg` + * This extracts a high-quality JPEG at the exact moment of the highlight. + +**Phase 6: Package Assembly** +The final step is the generation of the `Summary.md` file. The script uses a templating engine (e.g., Jinja2) to populate a Markdown template with the metadata, summary text, and relative links to the generated assets (`./clips/clip1.mp4`, `./screenshots/thumb1.jpg`). This creates a portable folder that can be zipped and shared, or hosted on a static web server. + +### 3.2 Robust JSON Schema Design +The interface between the LLM and the Python code is the most fragile part of the pipeline. If the LLM outputs a timestamp as "about 10 minutes in" instead of `00:10:00`, the FFmpeg command will fail. Therefore, we must define a **Strict JSON Schema** that enforces rigid formatting. We draw inspiration from the **Schema.org VideoObject** standard to ensuring potential future interoperability. + +**Proposed JSON Schema**: + +```json +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "title": { "type": "string", "description": "A concise, professional title for the video session." }, + "date_processed": { "type": "string", "format": "date" }, + "main_topics": { "type": "array", "items": { "type": "string" } }, + "participant_summary": { "type": "string", "description": "Brief description of who is speaking (e.g., 'A lecturer and a class of students')." } + }, + "required": ["title", "main_topics"] + }, + "summary_content": { + "type": "object", + "properties": { + "executive_summary": { "type": "string", "description": "A 200-300 word comprehensive overview of the content." }, + "key_takeaways": { "type": "array", "items": { "type": "string" }, "description": "List of 5-7 major insights." }, + "action_items": { "type": "array", "items": { "type": "string" }, "description": "Specific tasks or follow-ups mentioned." } + }, + "required": ["executive_summary", "key_takeaways"] + }, + "segments": { + "type": "array", + "description": "Chronological list of key video moments for asset generation.", + "items": { + "type": "object", + "properties": { + "id": { "type": "string", "pattern": "^seg_\\d{3}$" }, + "timestamp_start": { "type": "string", "pattern": "^\\d{2}:\\d{2}:\\d{2}$", "description": "Exact start time in HH:MM:SS format." }, + "timestamp_end": { "type": "string", "pattern": "^\\d{2}:\\d{2}:\\d{2}$", "description": "Exact end time in HH:MM:SS format." }, + "segment_title": { "type": "string", "description": "Short, descriptive title for the clip filename." }, + "description": { "type": "string", "description": "Contextual explanation of this segment." }, + "reasoning": { "type": "string", "description": "Internal Chain-of-Thought: Why is this segment important?" }, + "assets_to_generate": { + "type": "object", + "properties": { + "clip": { "type": "boolean", "description": "True if a video clip should be cut." }, + "screenshot": { "type": "boolean", "description": "True if a screenshot is needed." } + }, + "required": ["clip", "screenshot"] + } + }, + "required": ["timestamp_start", "timestamp_end", "segment_title", "assets_to_generate"] + } + } + }, + "required": ["meta", "summary_content", "segments"] +} +``` + +**Schema Design Rationale**: +* **Validation Patterns**: The regex `^\\d{2}:\\d{2}:\\d{2}$` strictly enforces the format required by FFmpeg. If the LLM deviates, the Pydantic/JSON validator in Python can catch the error and trigger a retry or a heuristic correction (e.g., appending `:00` if seconds are missing). +* **Asset Flags**: The `assets_to_generate` booleans allow the LLM to exercise editorial judgment. Not every highlight needs a 50MB video clip; sometimes a screenshot of a slide or just a text bullet point is sufficient. +* **Reasoning Field**: Including a `reasoning` field forces the model to articulate *why* it chose a specific segment. Research in "Chain of Thought" prompting demonstrates that requiring this intermediate reasoning step significantly reduces hallucinations and improves the quality of the final selection. + +### 3.3 Prompt Engineering: The Zero-Shot Strategy +To achieve reliable results without fine-tuning (Zero-Shot), the system prompt must be engineered as a functional specification. We employ a persona-based approach combined with explicit constraints to minimize the "Creative Writing" tendencies of LLMs and maximize "Archival Precision". + +**System Prompt Specification**: + +``` +Role: +You are a Senior Technical Archivist and Video Editor. Your goal is to process a raw transcript into a structured knowledge artifact. + +Input Context: +You will receive the transcript of a long-form video (3-4 hours). The transcript contains timestamped dialogue. + +Primary Objective: +Analyze the transcript to produce a JSON object containing a high-level summary and a list of specific "Highlight Segments" for video extraction. + +Critical Constraints & Rules (The "Anti-Hallucination" Protocol): +1. Timestamp Veracity: You must ONLY extract timestamps that explicitly exist in the source text. Do not guess. +2. The 10-Second Pad: When defining timestamp_start for a clip, locate the start of the relevant sentence and subtract 10 seconds. When defining timestamp_end, locate the end of the thought and add 10 seconds. This ensures the clip has context and audio is not clipped. +3. Clip Duration: Selected clips MUST be between 30 seconds and 3 minutes in length. +4. Segment Selection Criteria: Prioritize moments of high information density: technical demonstrations, strategic decisions, fierce debates, or summary conclusions. Ignore casual banter or housekeeping logistics. +5. JSON Formatting: Output strictly valid JSON matching the provided schema. Do not include markdown fencing or preamble. + +Process (Chain of Thought): +1. Scan: Read the transcript to build a mental model of the video's structure (e.g., Intro -> Module 1 -> Break -> Module 2 -> Q&A). +2. Select: Identify 5-10 candidates for highlights. +3. Refine: Check the start/end times. Ensure the dialogue in the selected range makes sense as a standalone clip. +4. Output: Generate the JSON. +``` + +**Why Zero-Shot?** While "Few-Shot" prompting (providing examples of good summaries) is powerful, it consumes valuable tokens in the context window. Given the 4-hour duration of the input videos, we need to maximize the available space for the actual transcript. Modern models like Claude 3.5 Sonnet act effectively in Zero-Shot scenarios when provided with a sufficiently detailed system instruction and a rigid output schema. + +### 3.4 Handling Ambiguity and User Review Flow +Automation is imperfect. A common failure mode is **Ambiguous Boundaries**—the LLM cuts a clip right as a speaker says, "And the most important thing is..." and then the clip ends. Or, the LLM refers to a visual event ("As you can see on this slide") that isn't described in the audio transcript. + +#### 3.4.1 Handling Ambiguity: The "Safety Pad" +To mitigate boundary errors, the Python orchestration layer implements a **Safety Pad** logic. Irrespective of the exact timestamp returned by the LLM, the FFmpeg command automatically subtracts `DEFAULT_PAD_PRE` (e.g., 5 seconds) from the start and adds `DEFAULT_PAD_POST` (e.g., 5 seconds) to the end. This heuristic significantly reduces the rate of "clipped sentences". + +#### 3.4.2 The User Review Workflow (Human-in-the-Loop) +We propose a "Draft-then-Render" workflow that balances automation with control, without requiring a complex GUI application. + +1. **Phase A: Analysis Run (Fast)** + * The system processes the batch. It generates the `Summary.md` and a `manifest.yaml` file for each video. + * It *does not* yet cut the high-res clips (which is the slow part). + * Instead, it generates **Low-Res Previews** or simply lists the timestamps in the Markdown. +2. **Phase B: Review (Optional)** + * The user opens the `Summary.md`. If they notice a highlight titled "Budget Discussion" starts at 00:00:00 (suspicious), they can check the `manifest.yaml` and correct the timestamp. + * *Realistically, users will skip this. The system is designed to default to "Good Enough."* +3. **Phase C: Asset Rendering** + * A second script (or a flag `--render`) reads the (potentially edited) `manifest.yaml` and executes the heavy FFmpeg processing to produce the final `output/clips/` folder. + +This separation allows for rapid iteration on the *text* summary without waiting for hours of video rendering, while keeping the entire interface text-based (Markdown/YAML), which fits the "Notes" paradigm. + +## 4. Bulk Generation Strategy: Operational Reliability +Processing a folder of 50–100 large video files is an engineering challenge as much as an AI challenge. The system must be resilient to network failures, corrupt files, and API hiccups. + +### 4.1 Error Handling and Resilience +* **Corrupt File Detection**: Before any processing, `ffprobe` checks the file container. If the duration is N/A or the bitrate is 0, the file is logged to `corrupt_files.csv` and skipped. This prevents the script from hanging on bad data. +* **API Retry Logic**: Calls to Deepgram and the LLM are wrapped in a **Retry Decorator** (using Python libraries like `tenacity`). We implement an *exponential backoff* strategy: if a 503 Service Unavailable error occurs, the script waits 2 seconds, then 4, then 8, up to a maximum of 5 retries before logging a failure. +* **State Persistence (Resumability)**: The script maintains a `job_status.json` database. If the power fails after video #49, restarting the script will check this registry, see that #1-#49 are "COMPLETED", and immediately resume at #50. This is critical for long-running batch jobs. + +### 4.2 Naming and Organization Best Practices +A consistent naming convention is vital for long-term archivability. + +* **Output Directory Structure**: + ``` + Output/ + ├── 2023-11-05_Q3_All_Hands/ # Folder matches Video Name + │ ├── Summary.md # The Knowledge Artifact + │ ├── manifest.json # Machine-readable metadata + │ ├── assets/ + │ │ ├── Clip_01_Financials_00-15-20.mp4 # Ordered & Descriptive + │ │ ├── Clip_02_Roadmap_01-10-00.mp4 + │ │ └── Screenshot_01_Slide_A.jpg + │ └── logs/ + │ └── processing.log + ``` +* **Clip Naming**: Filenames include the **Sequence Index** (to keep them sorted), a **Sanitized Title** (from the LLM), and the **Timestamp**. This ensures that even if the file is copied out of the folder, its context (what is it? when did it happen?) is preserved in the filename itself. + +### 4.3 The Execution Report +At the conclusion of a batch run, the system generates a **Batch Execution Report** (`Batch_Report.csv` and `.md`). +* **Fields**: Filename, Input Size, Duration, Processing Time, Status (Success/Fail/Warning), Cost Estimate (calculated based on duration). +* **Utility**: This report allows the operator to quickly scan for red flags (e.g., a 4-hour video that processed in 1 minute implies a failure) without opening every individual folder. + +## 5. Conclusion +The "Video-to-Notes" project presents a specific set of constraints—bulk processing, large local files, and long-duration context—that renders off-the-shelf SaaS tools inefficient and expensive. The proposed **Hybrid Architecture** offers a precise, scalable, and cost-effective solution. + +By leveraging **FFmpeg** for local audio extraction, we neutralize the bandwidth penalty of large files. By utilizing **Deepgram** and **Claude 3.5 Sonnet**, we access enterprise-grade intelligence capable of understanding 4-hour narratives without the "context amnesia" of smaller local models. The implementation of a robust **JSON Schema** and **Zero-Shot Prompting** strategy ensures that the output is not just text, but a structured, actionable media package. + +This architecture turns a dormant repository of "dark data" into an accessible, navigable knowledge base, unlocking the value of thousands of hours of video content with minimal human intervention. + +### Table 1: Summary of Strategic Recommendation + +| Feature | SaaS (Cloud Only) | Hybrid (Local + API) | Offline (Local Only) | +| :--- | :--- | :--- | :--- | +| **Data Movement** | **Critical Bottleneck** (Upload GBs) | **Optimized** (Upload MBs of audio) | **Instant** (Zero transfer) | +| **Long Context** | **Poor** (Often capped <3 hrs) | **Excellent** (200k+ tokens) | **Poor** (Hardware limited) | +| **Cost Efficiency** | **Low** (High subscription fees) | **High** (Pay-per-use, low rates) | **Medium** (High CapEx) | +| **Privacy** | **Low** (3rd party storage) | **Medium** (Transient processing) | **High** (Air-gapped) | +| **Implementation** | **Easy** (No code) | **Moderate** (Python script) | **Hard** (Hardware/Driver ops) | +| **Recommendation** | *Reject* | **Adopt** | *Reject* (unless classified) | + ## Problem 2: **Zero-Shot Prompt to generate 3 LinkedIn Post** @@ -36,7 +377,78 @@ Design a **single zero-shot prompt** that takes a user’s persona configuration ### Your Solution for problem 2: -You need to put your solution here. +**System Prompt Design** + +We will use a structured system prompt that accepts dynamic inputs (Persona + Topic) and enforces a strict JSON output for the application UI. + +**Prompt Template:** + +```text +You are an expert LinkedIn Content Strategist and Ghostwriter. Your goal is to write high-engagement LinkedIn posts that sound authentic to a specific User Persona. + +--- +### 1. INPUT CONTEXT +**USER PERSONA (Voice & Rules):** +{user_persona} +*(System Note: This includes the user's background, preferred tone [e.g., professional vs. casual], formatting style, and strict "Do Nots" [e.g., no emojis, no clickbait].)* + +**TOPIC:** +{user_topic} + +**ADDITIONAL CONTEXT (Optional):** +{user_context_or_goal} + +--- +### 2. THE TASK +Generate **3 distinct LinkedIn post drafts** based on the TOPIC, strictly adhering to the USER PERSONA. Each draft must use a unique structural style to give the user variety: + +* **Style A: The Storyteller (Narrative)** + * Structure: Hook (relatable moment) → Conflict/Challenge → Resolution/Insight → Takeaway. + * Goal: Emotional connection and vulnerability. +* **Style B: The Contrarian / Thought Leader (Opinion)** + * Structure: Punchy Hook (challenge a norm) → Argument/Evidence → "Why most people are wrong" → Conclusion. + * Goal: Spark debate and comments. +* **Style C: The Educator (Actionable)** + * Structure: Promise (Value Proposition) → List/Steps (Bullet points) → Summary/Call to Action. + * Goal: Saves and shares (high utility). + +--- +### 3. CONSTRAINTS & FORMATTING +* **Voice Check**: If the Persona says "No Emojis", do not use emojis. If the Persona says "Short sentences", keep it punchy. +* **Structure**: Use short paragraphs (1-2 lines) for readability (mobile-friendly). +* **Hook**: The first line must be gripping (no "I want to talk about..."). +* **JSON Only**: Output **ONLY** a valid JSON object. Do not include introductory text or markdown fencing. + +--- +### 4. OUTPUT SCHEMA (JSON) +{ + "drafts": [ + { + "style": "Storyteller", + "hook": "The first 1-2 lines of the post...", + "content": "The full post content...", + "hashtags": ["#tag1", "#tag2"] + }, + { + "style": "Contrarian", + "hook": "...", + "content": "...", + "hashtags": [] + }, + { + "style": "Educator", + "hook": "...", + "content": "...", + "hashtags": [] + } + ] +} +``` + +**Why this works:** +1. **Persona Injection**: By passing the `{user_persona}` block, we ensure the LLM "roleplays" the user, preventing generic AI-sounding text. +2. **Structured Variety**: Forcing 3 specific frameworks (Story/Opinion/Action) ensures the drafts are actually different, not just rephrased versions of the same text. +3. **JSON Output**: The strict schema allows the frontend to parse the response instantly and display them as 3 separate cards with "Select" buttons, satisfying the "app" requirement. ## Problem 3: **Smart DOCX Template → Bulk DOCX/PDF Generator (Proposal + Prompt)** @@ -54,7 +466,48 @@ Submit a **proposal** for building this system using GenAI (OpenAI/Gemini) for ### Your Solution for problem 3: -You need to put your solution here. +# Proposal: Intelligent Docx Template Engine + +## 1. System Architecture + +The system is designed as a 3-stage pipeline: **Ingestion & Analysis** -> **Template Registry** -> **Production Generation**. + +### Phase 1: Ingestion (AI-Powered Template Discovery) +Instead of forcing users to manually add `{{brackets}}` to Word docs (which is hard for non-tech users), we use a **One-Shot LLM Analysis** step. + +1. **User Upload**: Uploads a standard filled `Sample_Offer_Letter.docx`. +2. **Parsing**: System converts DOCX -> Markdown/Text (using `python-docx` or `pypandoc`) to preserve structure. +3. **AI Analysis (The Brain)**: + * **Input**: The text content of the document. + * **Prompt**: "Identify all dynamic entities in this contract (Names, Dates, Amounts, Addresses). Map them to a standard variable naming convention (e.g., `candidate_name`, `start_date`). Return a JSON map of `Original Text` -> `Variable Key`." +4. **Template Compilation**: The system uses the JSON map to search-and-replace the text in the original DOCX with Jinja2 tags (e.g., replaces "John Doe" with `{{ candidate_name }}`). +5. **Output**: A saved `Master_Template.docx` and a `schema.json` defining the fields. + +### Phase 2: User Verification (Frontend) +The user sees a "Detected Fields" review screen. +* *candidate_name*: "John Doe" (Detected) +* *salary_amount*: "$120,000" (Detected) +* *User Action*: Confirm or Rename fields. + +### Phase 3: Bulk Generation Engine +1. **Input Source**: User uploads an Excel/CSV file where column headers match the `schema.json` keys (e.g., Column A = `candidate_name`). +2. **Processing Loop**: + * Load `Master_Template.docx` using `docxtpl` (Python library). + * For each row in Excel: + * Render context: `{ 'candidate_name': 'Alice Smith', ... }`. + * Save formatted DOCX. + * Convert to PDF (using headless LibreOffice or CloudConvert API). +3. **Delivery**: Zip file download. + +## 2. Technology Stack +* **Template Logic**: `docxtpl` (Python) - Allows Jinja2 syntax inside Word documents. +* **PDF Conversion**: `LibreOffice` (Headless mode) - Free, reliable local conversion. +* **AI Analysis**: `Gemini 1.5 Pro` - chosen for large context window (can read whole contracts) and strong entity extraction capabilities. + +## 3. Why this wins? +* **Zero-Config**: Users upload *existing* used files, not special templates. +* **Scalable**: `docxtpl` is extremely fast (milliseconds per doc). +* **Flexible**: Supports logic (if/else) inside Word docs if advanced users want to edit the Jinja2 tags manually. ## Problem 4: Architecture Proposal for 5-Min Character Video Series Generator @@ -66,4 +519,70 @@ Create a **small, clear architecture proposal** (no code, no prompts) describing ### Your Solution for problem 4: -You need to put your solution here. +# Architecture: Character-Based Video Series Generator + +## 1. Core Concept: "The Series Bible" (State Management) +To solve the hardest problem in AI video—**Consistency**—we introduce a centralized "Series Bible" database. This is not just metadata; it is a set of fine-tuned adapters and reference tensors that strictly enforce identity. + +## 2. System Architecture + +```mermaid +graph TD + UserInput[User Prompt: 'Episode Idea'] --> ScriptAgent[Script Agent (LLM)] + SeriesBible[(Series Bible DB)] --> ScriptAgent + SeriesBible --> VisGen[Visual Generator] + + ScriptAgent -->|Screenplay JSON| Manager[Production Manager] + + subgraph "Visual Pipeline" + Manager -->|Scene Desc| VisGen + VisGen -->|IP-Adapter + LoRA| ImageGen[Stable Diffusion XL/Flux] + ImageGen -->|Consistent Frames| VideoGen[Img2Video (Kling/SVD)] + end + + subgraph "Audio Pipeline" + Manager -->|Dialogue| TTS[ElevenLabs/OpenAI] + TTS -->|Voice Profiles| AudioFiles + end + + VideoGen --> Assembly[FFmpeg Assembly] + AudioFiles --> Assembly + Assembly --> FinalVideo +``` + +## 3. Component Details + +### A. The "Series Bible" (Consistency Layer) +For every character (e.g., "Detective Mike"), we store: +1. **Reference Images**: 5-10 clear shots (Front, Side, Close). +2. **IP-Adapter Weights**: Pre-computed visual embeddings to inject into the diffusion model. +3. **Voice ID**: A specific cloned voice handle (e.g., ElevenLabs ID). +4. **Personality Prompt**: "Grumpy, cynical, speaks in short sentences." + +### B. The Script Agent (LLM) +* **Role**: Screenwriter. +* **Input**: "Mike investigates a stolen pizza." +* **Output**: A structured scene-by-scene script. + * *Scene 1*: "Mike's Office. Rainy." (Visual Spec) + * *Action*: "Mike looks at empty pizza box." (Animation Spec) + * *Dialogue*: "Mike: Who took the pepperoni?" (Audio Spec) + +### C. The Visual Engine (Flux/SDXL + ControlNet) +* **Problem**: Standard GenAI forgets what Mike looks like in Scene 2. +* **Solution**: + * **Prompt**: "A photo of [Mike], looking angry at a pizza box..." + * **Conditioning**: Apply **IP-Adapter** (InstantID) using the Reference Images from the Bible. This forces the generated face to match Mike exactly, regardless of the prompt. + * **Motion**: Feed the generated frame into an Image-to-Video model (like Runway Gen-3 or Stable Video Diffusion) to generate 4 seconds of movement. + +### D. The Audio Engine +* Generate speech using the specific **Voice ID** from the Bible. +* (Optional) Use **Wav2Lip** or **SadTalker** to sync the video lip movements to the generated audio. + +### E. Assembly (FFmpeg) +* Stitch all generated video clips ("shots"). +* Overlay audio tracks. +* Add background music based on the "Mood" tag in the script. + +## 4. Key Trade-off: Rendering Time vs. Quality +* **Fast Mode**: Uses 2D static images with simple "camera pan" effects (Ken Burns). fast generation (mins). +* **Full Video Mode**: Generates actual AI video for every shot. High compute cost, potential for "warping" artifacts, but premium output. We default to **Fast Mode** for draft, **Full Mode** for final export. From f0afed4136208910b78998d667bc958d64531bc4 Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 22:18:36 +0530 Subject: [PATCH 02/13] problem solution updated --- GenAI.md | 69 ++++++++++++++++ Solution_1_Video_Notes.md | 146 ++++++++++++++++++++++++++++++++++ Solution_2_LinkedIn.md | 74 +++++++++++++++++ Solution_3_Doc_Template.md | 42 ++++++++++ Solution_4_Character_Video.md | 67 ++++++++++++++++ 5 files changed, 398 insertions(+) create mode 100644 Solution_1_Video_Notes.md create mode 100644 Solution_2_LinkedIn.md create mode 100644 Solution_3_Doc_Template.md create mode 100644 Solution_4_Character_Video.md diff --git a/GenAI.md b/GenAI.md index 7c5107cc..eb9210eb 100644 --- a/GenAI.md +++ b/GenAI.md @@ -1,5 +1,74 @@ # GenAI Assignment: +**Evaluation Criteria** + +We will score your submission on: + +* Clarity and practicality of architecture +* Robust JSON schema design +* Prompt quality (zero-shot, reliable, minimal hallucination risk) +* Handling of ambiguity + user review flow +* Bulk generation thinking (errors, naming, report) + +## Problem 1: **Proposal for “Video-to-Notes”** + +We have a local folder of long videos (3–4 hours each, 200MB+). Watching them fully is slow. We need an automated way to generate a “summary package” per video: **Summary.md** + highlight clips + screenshots, all organized per video. [READ MORE ABOUT THE PROJECT](./Video-summary-platform.md) + +### **Task** + +Prepare a **pre-processed solution proposal** comparing **three approaches** **:** + +1. **Online/Cloud-Based (Already Available Solutions)** +2. **Build Our Own Using LLM APIs (Hybrid: local media processing + cloud LLM)** +3. **Build Fully Offline Using Open-Source Models (Local transcription + local LLM + pipeline)** + +No code required. We want a **clear, practical proposal** with architecture and tradeoffs. + +### Your Solution for problem 1: + +[**> Click here to view the Architectural Proposal (Solution_1_Video_Notes.md)**](./Solution_1_Video_Notes.md) + +## Problem 2: **Zero-Shot Prompt to generate 3 LinkedIn Post** + +Design a **single zero-shot prompt** that takes a user’s persona configuration + a topic and generates **3 LinkedIn post drafts** in **3 distinct styles**, each aligned to the user’s voice and constraints. The output must be structured so the app can: show 3 drafts to the user. Assume we are consuming **OpenAI API / Gemini API** with **one prompt call** (no fine-tuning). Your prompt must reliably produce valid, structured output. [READ MORE ABOUT THE PROJECT](./linkedin-automation.md) + +**TASK:** Write a prompt that can work. + +### Your Solution for problem 2: + +[**> Click here to view the Prompt Design (Solution_2_LinkedIn.md)**](./Solution_2_LinkedIn.md) + +## Problem 3: **Smart DOCX Template → Bulk DOCX/PDF Generator (Proposal + Prompt)** + +Users have many Word documents that act like templates (offer letters, certificates, invoices, contracts). They repeatedly change only a few fields (name, date, amount, address, role, etc.). Doing this manually is slow and error-prone, especially in bulk. [READ MORE ABOUT THE PROJECT](./docs-template-output-generation.md) + +We want a system that: + +1. Converts an uploaded **DOCX** into a reusable **template** by identifying editable fields. +2. Supports **single generation** (form-fill → DOCX/PDF download). +3. Supports **bulk generation** via **Excel/Google Sheet** rows. + +### **Task (No coding)** + +Submit a **proposal** for building this system using GenAI (OpenAI/Gemini) for “template field detection” and “field schema generation”. We want a practical design, not code. + +### Your Solution for problem 3: + +[**> Click here to view the Template Engine Proposal (Solution_3_Doc_Template.md)**](./Solution_3_Doc_Template.md) + +## Problem 4: Architecture Proposal for 5-Min Character Video Series Generator + +We want to build a system that helps a user create a short video series (around **5 minutes per episode**) using predefined characters. The user defines characters (image + personality) and relationships once, then provides a short story/situation for an episode. The system outputs a complete episode package and optionally a final video. [READ MORE ABOUT THE PROJECT](./char-based-video-generation.md) + +### **Task** + +Create a **small, clear architecture proposal** (no code, no prompts) describing how you would design and build this system. + +### Your Solution for problem 4: + +[**> Click here to view the Character Video Architecture (Solution_4_Character_Video.md)**](./Solution_4_Character_Video.md) + + **Evaluation Criteria** We will score your submission on: diff --git a/Solution_1_Video_Notes.md b/Solution_1_Video_Notes.md new file mode 100644 index 00000000..b9d06e27 --- /dev/null +++ b/Solution_1_Video_Notes.md @@ -0,0 +1,146 @@ +# Architectural Proposal: Automated Video-to-Notes Platform + +## 1. Introduction: The Video Information Bottleneck +The modern digital enterprise and educational landscapes have undergone a seismic shift in information storage, moving from structured text documents to unstructured audio-visual assets. Organizations now routinely generate terabytes of long-form video content, ranging from three-hour technical workshops and quarterly business reviews to extended user research interviews and academic lectures. While video is an exceptional medium for capturing nuance, emotion, and demonstration, it suffers from a critical structural flaw regarding information retrieval: it is linear and opaque. Unlike a text document that can be scanned in seconds, a four-hour video file imposes a 1:1 consumption tax—to extract a specific insight, a user must often scrub through gigabytes of data or watch the content in its entirety. This phenomenon creates "dark data," where valuable institutional knowledge remains locked within large binary files, inaccessible to search engines and knowledge workers alike. + +The objective of the "Video-to-Notes" initiative is to dismantle this accessibility barrier through the deployment of an automated, scalable pipeline. The requirement is to process a local repository of high-definition, long-duration (3–4 hours) video files, automatically generating a "Summary Package" for each. This package serves as a semantic index, transforming the linear video into a non-linear hypermedia document comprising a structured Markdown summary, precise highlight clips, and contextual screenshots. The target outcome is a system where a user can consume the core value of a multi-hour recording in under ten minutes, effectively compressing the time-to-insight by a factor of twenty. + +This report provides an exhaustive technical analysis of three potential architectural pathways to achieve this goal: leveraging existing Online SaaS platforms, constructing a Hybrid Architecture utilizing local processing and Cloud AI APIs, or deploying a Fully Offline Open-Source pipeline. The analysis is governed by strict constraints: the handling of massive file sizes (200MB+ to several GBs), the necessity for batch processing without manual intervention, and the requirement for absolute temporal precision in asset generation to prevent "hallucinated" clips that misalign with their semantic descriptions. + +### 1.1 The Physics of Data and Constraint Analysis +The specific constraints of this project—files located locally, large file sizes, and extended durations—dictate the architectural viability of any proposed solution. The fundamental physics of data transfer plays a defining role. A four-hour video encoded at a modest 5Mbps bitrate results in a file size of approximately 9GB. Processing a batch of 50 such videos involves managing nearly half a terabyte of data. + +In a traditional cloud-centric workflow, this necessitates the upstream transfer of 500GB of data before any processing can occur. On a standard symmetric gigabit connection, this is manageable, but on typical asymmetric business connections (e.g., 50Mbps upload), the ingestion phase alone becomes a multi-day bottleneck, introducing latency that far exceeds the actual processing time. Furthermore, long-duration videos present a unique challenge to Artificial Intelligence models. A four-hour transcript contains between 30,000 and 45,000 tokens. Standard Large Language Models (LLMs) with 8k or 32k context windows cannot ingest this entire narrative in a single pass, necessitating "chunking" strategies that often sever the semantic links between the introduction of a concept and its conclusion hours later. + +Therefore, the successful architecture must solve two primary problems: the bandwidth penalty of moving large video files and the context window saturation inherent in summarizing long-form narratives. + +## 2. Comparative Architectural Analysis +We evaluated three distinct approaches against the core success criteria: clarity of architecture, handling of bulk constraints, and the precision of the output assets. + +### 2.1 Approach 1: Online/Cloud-Based SaaS Solutions +**Market Segment**: AI Video Repurposing Platforms (e.g., Pictory, Exemplary.ai, ScreenApp) + +The first approach examines the viability of "buying" rather than "building." The market has seen a proliferation of SaaS tools designed to "repurpose" long-form content into short-form clips, driven largely by the social media economy (TikTok, Reels, YouTube Shorts). These platforms typically offer a web-based interface where users upload videos, and the system automatically generates transcripts, summaries, and clips. + +```mermaid +graph LR + User[User] -->|Upload 5GB| Cloud[SaaS Cloud] + Cloud -->|Process| Output[Summary] +``` + +**Verdict: Rejected.** The friction of uploading large local files and strict duration limits make SaaS solutions operationally unviable. + +### 2.2 Approach 2: Hybrid Architecture (Local Processing + Cloud AI) +**Stack**: Local Python Orchestrator, FFmpeg, Deepgram API, Anthropic/OpenAI API + +The Hybrid Architecture represents a strategic decoupling of "Heavy Lifting" (media manipulation) from "Heavy Thinking" (semantic analysis). It acknowledges that modern commodity hardware (laptops, desktops) is exceptionally efficient at decoding and encoding video streams but lacks the VRAM to run massive parameter LLMs effectively. Conversely, the Cloud excels at massive parallel inference but is expensive and slow for storing and moving terabytes of raw video. + +```mermaid +graph LR + A[Local Video] -->|FFmpeg| B[Audio 50MB] + B -->|Upload| C[Cloud STT] + C -->|Transcript| D[Cloud LLM] + D -->|JSON| E[Local FFmpeg] + E -->|Cut| F[Local Assets] +``` + +**Verdict: Recommended.** Optimal balance of speed, cost, and quality. + +### 2.3 Approach 3: Fully Offline (Open Source Pipeline) +**Stack**: Faster-Whisper, Llama 3 (70B), Local GPU + +The third approach explores total autonomy: running the transcription and summarization stack entirely on local hardware. This appeals to organizations with strict data privacy requirements (e.g., HIPAA, GDPR, NDA content) where no data can leave the premise. + +```mermaid +graph LR + A[Local Video] -->|Whisper| B[Local Transcript] + B -->|Llama 3| C[Local JSON] + C -->|FFmpeg| D[Local Assets] +``` + +**Verdict: Viable only with High-End Hardware.** Recommended only for classified data. + +## 3. Detailed Solution Design: The Hybrid Engine (Recommended) + +Based on the comparative analysis, the **Hybrid Architecture** is selected. + +### 3.1 System Architecture and Data Flow + +```mermaid +graph TD + %% Optimized Compact Flow + Start([Start]) --> Scan[Scan Folder] + Scan --> Extract[FFmpeg: Extract Audio] + Extract -->|Upload| STT[Deepgram API] + STT -->|Transcript| LLM[Claude 3.5 Sonnet] + LLM -->|JSON| Cuts[FFmpeg: Cut Clips] + Cuts --> End([Done]) +``` + +**Phase 1: Ingestion and Validation** +The script iterates through the target `input/videos/` directory. For each file, it performs a validity check using `ffprobe`. + +**Phase 2: Bandwidth-Optimized Audio Extraction** +To bypass the 200MB+ upload constraint, the system extracts the audio track locally. +`ffmpeg -i input.mp4 -vn -acodec libopus output.opus` +Result: ~95% size reduction. + +**Phase 3: Transcription and Diarization** +Uploaded to **Deepgram API** (`nova-2-general`). Returns word-level timestamps. + +**Phase 4: Intelligence (LLM Layer)** +Sent to **Claude 3.5 Sonnet** (200k context). The LLM acts as a Video Editor, selecting timecodes for clips. + +**Phase 5: Local Asset Production** +Python parses the LLM's JSON and uses **FFmpeg** to cut clips from the *original* local video. + +**Phase 6: Package Assembly** +Generates `Summary.md` linking to local clips. + +### 3.2 Robust JSON Schema Design + +```json +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "meta": { "required": ["title", "main_topics"] }, + "summary_content": { "required": ["executive_summary", "key_takeaways"] }, + "segments": { + "type": "array", + "items": { + "properties": { + "timestamp_start": { "pattern": "^\\d{2}:\\d{2}:\\d{2}$" }, + "timestamp_end": { "pattern": "^\\d{2}:\\d{2}:\\d{2}$" }, + "assets_to_generate": { + "properties": { "clip": {"type": "boolean"}, "screenshot": {"type": "boolean"} } + } + } + } + } + } +} +``` + +### 3.3 Prompt Engineering: The Zero-Shot Strategy + +**System Prompt Specification**: + +``` +Role: Senior Technical Archivist. +Input: Long-form video transcript. +Task: Produce a JSON object with summary and highlight segments. +Constraints: +1. Timestamp Veracity: Do not guess timestamps. +2. 10-Second Pad: Add context padding to start/end times. +3. Clip Duration: 30s - 3m. +Output: Valid JSON only. +``` + +### 3.4 Handling Ambiguity and Errors +* **Safety Pad**: Auto-expand LLM timestamps by +/- 5 seconds. +* **Retry Logic**: Exponential backoff for API calls. +* **Resumability**: `job_status.json` tracks progress. + +### 4. Conclusion +The **Hybrid Architecture** solves the bandwidth bottleneck via local audio extraction and the intelligence bottleneck via cloud LLMs, providing a scalable, purely usage-based solution for archival. diff --git a/Solution_2_LinkedIn.md b/Solution_2_LinkedIn.md new file mode 100644 index 00000000..a7717655 --- /dev/null +++ b/Solution_2_LinkedIn.md @@ -0,0 +1,74 @@ +# Solution: LinkedIn Post Generator Prompt + +## System Prompt Design + +We will use a structured system prompt that accepts dynamic inputs (Persona + Topic) and enforces a strict JSON output for the application UI. + +**Prompt Template:** + +```text +You are an expert LinkedIn Content Strategist and Ghostwriter. Your goal is to write high-engagement LinkedIn posts that sound authentic to a specific User Persona. + +--- +### 1. INPUT CONTEXT +**USER PERSONA (Voice & Rules):** +{user_persona} +*(System Note: This includes the user's background, preferred tone [e.g., professional vs. casual], formatting style, and strict "Do Nots" [e.g., no emojis, no clickbait].)* + +**TOPIC:** +{user_topic} + +**ADDITIONAL CONTEXT (Optional):** +{user_context_or_goal} + +--- +### 2. THE TASK +Generate **3 distinct LinkedIn post drafts** based on the TOPIC, strictly adhering to the USER PERSONA. Each draft must use a unique structural style to give the user variety: + +* **Style A: The Storyteller (Narrative)** + * Structure: Hook (relatable moment) → Conflict/Challenge → Resolution/Insight → Takeaway. + * Goal: Emotional connection and vulnerability. +* **Style B: The Contrarian / Thought Leader (Opinion)** + * Structure: Punchy Hook (challenge a norm) → Argument/Evidence → "Why most people are wrong" → Conclusion. + * Goal: Spark debate and comments. +* **Style C: The Educator (Actionable)** + * Structure: Promise (Value Proposition) → List/Steps (Bullet points) → Summary/Call to Action. + * Goal: Saves and shares (high utility). + +--- +### 3. CONSTRAINTS & FORMATTING +* **Voice Check**: If the Persona says "No Emojis", do not use emojis. If the Persona says "Short sentences", keep it punchy. +* **Structure**: Use short paragraphs (1-2 lines) for readability (mobile-friendly). +* **Hook**: The first line must be gripping (no "I want to talk about..."). +* **JSON Only**: Output **ONLY** a valid JSON object. Do not include introductory text or markdown fencing. + +--- +### 4. OUTPUT SCHEMA (JSON) +{ + "drafts": [ + { + "style": "Storyteller", + "hook": "The first 1-2 lines of the post...", + "content": "The full post content...", + "hashtags": ["#tag1", "#tag2"] + }, + { + "style": "Contrarian", + "hook": "...", + "content": "...", + "hashtags": [] + }, + { + "style": "Educator", + "hook": "...", + "content": "...", + "hashtags": [] + } + ] +} +``` + +**Why this works:** +1. **Persona Injection**: By passing the `{user_persona}` block, we ensure the LLM "roleplays" the user, preventing generic AI-sounding text. +2. **Structured Variety**: Forcing 3 specific frameworks (Story/Opinion/Action) ensures the drafts are actually different, not just rephrased versions of the same text. +3. **JSON Output**: The strict schema allows the frontend to parse the response instantly and display them as 3 separate cards with "Select" buttons, satisfying the "app" requirement. diff --git a/Solution_3_Doc_Template.md b/Solution_3_Doc_Template.md new file mode 100644 index 00000000..adfddd84 --- /dev/null +++ b/Solution_3_Doc_Template.md @@ -0,0 +1,42 @@ +# Proposal: Intelligent Docx Template Engine + +## 1. System Architecture + +The system is designed as a 3-stage pipeline: **Ingestion & Analysis** -> **Template Registry** -> **Production Generation**. + +### Phase 1: Ingestion (AI-Powered Template Discovery) +Instead of forcing users to manually add `{{brackets}}` to Word docs (which is hard for non-tech users), we use a **One-Shot LLM Analysis** step. + +1. **User Upload**: Uploads a standard filled `Sample_Offer_Letter.docx`. +2. **Parsing**: System converts DOCX -> Markdown/Text (using `python-docx` or `pypandoc`) to preserve structure. +3. **AI Analysis (The Brain)**: + * **Input**: The text content of the document. + * **Prompt**: "Identify all dynamic entities in this contract (Names, Dates, Amounts, Addresses). Map them to a standard variable naming convention (e.g., `candidate_name`, `start_date`). Return a JSON map of `Original Text` -> `Variable Key`." +4. **Template Compilation**: The system uses the JSON map to search-and-replace the text in the original DOCX with Jinja2 tags (e.g., replaces "John Doe" with `{{ candidate_name }}`). +5. **Output**: A saved `Master_Template.docx` and a `schema.json` defining the fields. + +### Phase 2: User Verification (Frontend) +The user sees a "Detected Fields" review screen. +* *candidate_name*: "John Doe" (Detected) +* *salary_amount*: "$120,000" (Detected) +* *User Action*: Confirm or Rename fields. + +### Phase 3: Bulk Generation Engine +1. **Input Source**: User uploads an Excel/CSV file where column headers match the `schema.json` keys (e.g., Column A = `candidate_name`). +2. **Processing Loop**: + * Load `Master_Template.docx` using `docxtpl` (Python library). + * For each row in Excel: + * Render context: `{ 'candidate_name': 'Alice Smith', ... }`. + * Save formatted DOCX. + * Convert to PDF (using headless LibreOffice or CloudConvert API). +3. **Delivery**: Zip file download. + +## 2. Technology Stack +* **Template Logic**: `docxtpl` (Python) - Allows Jinja2 syntax inside Word documents. +* **PDF Conversion**: `LibreOffice` (Headless mode) - Free, reliable local conversion. +* **AI Analysis**: `Gemini 1.5 Pro` - chosen for large context window (can read whole contracts) and strong entity extraction capabilities. + +## 3. Why this wins? +* **Zero-Config**: Users upload *existing* used files, not special templates. +* **Scalable**: `docxtpl` is extremely fast (milliseconds per doc). +* **Flexible**: Supports logic (if/else) inside Word docs if advanced users want to edit the Jinja2 tags manually. diff --git a/Solution_4_Character_Video.md b/Solution_4_Character_Video.md new file mode 100644 index 00000000..7a609574 --- /dev/null +++ b/Solution_4_Character_Video.md @@ -0,0 +1,67 @@ +# Architecture: Character-Based Video Series Generator + +## 1. Core Concept: "The Series Bible" (State Management) +To solve the hardest problem in AI video—**Consistency**—we introduce a centralized "Series Bible" database. This is not just metadata; it is a set of fine-tuned adapters and reference tensors that strictly enforce identity. + +## 2. System Architecture + +```mermaid +graph TD + UserInput[User Prompt: 'Episode Idea'] --> ScriptAgent[Script Agent (LLM)] + SeriesBible[(Series Bible DB)] --> ScriptAgent + SeriesBible --> VisGen[Visual Generator] + + ScriptAgent -->|Screenplay JSON| Manager[Production Manager] + + subgraph "Visual Pipeline" + Manager -->|Scene Desc| VisGen + VisGen -->|IP-Adapter + LoRA| ImageGen[Stable Diffusion XL/Flux] + ImageGen -->|Consistent Frames| VideoGen[Img2Video (Kling/SVD)] + end + + subgraph "Audio Pipeline" + Manager -->|Dialogue| TTS[ElevenLabs/OpenAI] + TTS -->|Voice Profiles| AudioFiles + end + + VideoGen --> Assembly[FFmpeg Assembly] + AudioFiles --> Assembly + Assembly --> FinalVideo +``` + +## 3. Component Details + +### A. The "Series Bible" (Consistency Layer) +For every character (e.g., "Detective Mike"), we store: +1. **Reference Images**: 5-10 clear shots (Front, Side, Close). +2. **IP-Adapter Weights**: Pre-computed visual embeddings to inject into the diffusion model. +3. **Voice ID**: A specific cloned voice handle (e.g., ElevenLabs ID). +4. **Personality Prompt**: "Grumpy, cynical, speaks in short sentences." + +### B. The Script Agent (LLM) +* **Role**: Screenwriter. +* **Input**: "Mike investigates a stolen pizza." +* **Output**: A structured scene-by-scene script. + * *Scene 1*: "Mike's Office. Rainy." (Visual Spec) + * *Action*: "Mike looks at empty pizza box." (Animation Spec) + * *Dialogue*: "Mike: Who took the pepperoni?" (Audio Spec) + +### C. The Visual Engine (Flux/SDXL + ControlNet) +* **Problem**: Standard GenAI forgets what Mike looks like in Scene 2. +* **Solution**: + * **Prompt**: "A photo of [Mike], looking angry at a pizza box..." + * **Conditioning**: Apply **IP-Adapter** (InstantID) using the Reference Images from the Bible. This forces the generated face to match Mike exactly, regardless of the prompt. + * **Motion**: Feed the generated frame into an Image-to-Video model (like Runway Gen-3 or Stable Video Diffusion) to generate 4 seconds of movement. + +### D. The Audio Engine +* Generate speech using the specific **Voice ID** from the Bible. +* (Optional) Use **Wav2Lip** or **SadTalker** to sync the video lip movements to the generated audio. + +### E. Assembly (FFmpeg) +* Stitch all generated video clips ("shots"). +* Overlay audio tracks. +* Add background music based on the "Mood" tag in the script. + +## 4. Key Trade-off: Rendering Time vs. Quality +* **Fast Mode**: Uses 2D static images with simple "camera pan" effects (Ken Burns). fast generation (mins). +* **Full Video Mode**: Generates actual AI video for every shot. High compute cost, potential for "warping" artifacts, but premium output. We default to **Fast Mode** for draft, **Full Mode** for final export. From 171056d874e38bfaefa053b056056c96f804c3c7 Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 22:25:45 +0530 Subject: [PATCH 03/13] updated solution 2 --- Solution_2_LinkedIn.md | 382 +++++++++++++++++++++++++++++++++++------ 1 file changed, 327 insertions(+), 55 deletions(-) diff --git a/Solution_2_LinkedIn.md b/Solution_2_LinkedIn.md index a7717655..e11ba952 100644 --- a/Solution_2_LinkedIn.md +++ b/Solution_2_LinkedIn.md @@ -1,74 +1,346 @@ -# Solution: LinkedIn Post Generator Prompt +# Architectural Frameworks for Zero-Shot Generative AI in Professional Social Media Strategy -## System Prompt Design +## 1. Introduction: The Convergence of Algorithmic Distribution and Generative Linguistics -We will use a structured system prompt that accepts dynamic inputs (Persona + Topic) and enforces a strict JSON output for the application UI. +The digital landscape of professional networking has undergone a radical transformation in the last decade, shifting from a static repository of resumes to a dynamic ecosystem of content-driven personal branding. At the forefront of this shift is LinkedIn, a platform where the "feed" has become the primary arbiter of professional visibility. As of 2025, the algorithmic distribution mechanisms governing this feed have evolved to prioritize "knowledge exchange" and "community building" over the passive consumption metrics that defined the Web 2.0 era. This evolution presents a unique challenge for professionals and organizations: the need for high-frequency, high-quality content that resonates with distinct audience segments while maintaining a consistent authentic voice. -**Prompt Template:** +Simultaneously, the advent of Large Language Models (LLMs) such as OpenAI’s GPT-4o and Google’s Gemini 1.5 Pro has introduced the possibility of automated content generation. However, the gap between a generic LLM output and a high-performing LinkedIn post is vast. Generic outputs often suffer from "hallucinated empathy," structural monotony, and a lack of strategic intent. To bridge this gap, sophisticated "Prompt Engineering" is required—specifically, the design of zero-shot prompts that can ingest raw user data and output structured, application-ready assets without the need for extensive model fine-tuning. -```text -You are an expert LinkedIn Content Strategist and Ghostwriter. Your goal is to write high-engagement LinkedIn posts that sound authentic to a specific User Persona. +This report provides an exhaustive technical analysis of designing a single, multi-modal zero-shot prompt capable of generating three distinct LinkedIn post architectures (The Personal Narrative, The Actionable Listicle, and The Contrarian Perspective) in a strictly validated JSON format. We explore the intersection of computational linguistics, social psychology, and software architecture to define a robust system for automated, persona-aligned content creation. ---- -### 1. INPUT CONTEXT -**USER PERSONA (Voice & Rules):** -{user_persona} -*(System Note: This includes the user's background, preferred tone [e.g., professional vs. casual], formatting style, and strict "Do Nots" [e.g., no emojis, no clickbait].)* +### 1.1 The Operational Imperative for Structured Output +In the context of application development, the raw text output of an LLM is often insufficient. Developers building content management systems (CMS) or social media automation tools require data to be structured—tagged with metadata, separated by fields (hook, body, call-to-action), and strictly typed. This necessitates a move from "conversational prompting" (where the AI chats back) to "programmatic prompting" (where the AI acts as a backend logic processor). The requirement for valid JSON output introduces significant complexity, particularly regarding syntax validation, newline escaping, and schema adherence in stochastic models. -**TOPIC:** -{user_topic} +### 1.2 The Challenge of Voice in Zero-Shot Environments +"Zero-shot" implies that the model must generate high-fidelity content without being provided with a dataset of the user's previous writing to "learn" from. Instead, the "Voice" must be mathematically defined via a set of configuration variables—tone, cadence, vocabulary density, and sentence structure—passed within the prompt's context window. This report analyzes how to distill the abstract concept of "persona" into executable linguistic constraints that an LLM can parse and replicate instantly. -**ADDITIONAL CONTEXT (Optional):** -{user_context_or_goal} +## 2. Deconstructing LinkedIn Engagement Architectures ---- -### 2. THE TASK -Generate **3 distinct LinkedIn post drafts** based on the TOPIC, strictly adhering to the USER PERSONA. Each draft must use a unique structural style to give the user variety: - -* **Style A: The Storyteller (Narrative)** - * Structure: Hook (relatable moment) → Conflict/Challenge → Resolution/Insight → Takeaway. - * Goal: Emotional connection and vulnerability. -* **Style B: The Contrarian / Thought Leader (Opinion)** - * Structure: Punchy Hook (challenge a norm) → Argument/Evidence → "Why most people are wrong" → Conclusion. - * Goal: Spark debate and comments. -* **Style C: The Educator (Actionable)** - * Structure: Promise (Value Proposition) → List/Steps (Bullet points) → Summary/Call to Action. - * Goal: Saves and shares (high utility). +To design an effective prompt, one must first reverse-engineer the "success criteria" of the target platform. LinkedIn’s algorithm is distinct from visual platforms like Instagram or ephemeral platforms like X (Twitter). It weighs "Dwell Time" (the duration a user spends consuming a post) and "Constructive Engagement" (comments that generate replies) heavily. Therefore, the prompt must be engineered to produce content structures that maximize these specific metrics. ---- -### 3. CONSTRAINTS & FORMATTING -* **Voice Check**: If the Persona says "No Emojis", do not use emojis. If the Persona says "Short sentences", keep it punchy. -* **Structure**: Use short paragraphs (1-2 lines) for readability (mobile-friendly). -* **Hook**: The first line must be gripping (no "I want to talk about..."). -* **JSON Only**: Output **ONLY** a valid JSON object. Do not include introductory text or markdown fencing. +### 2.1 The Psychology of Dwell Time and the "See More" Click +The most critical structural element of any LinkedIn post is the visible preview—typically the first two to three lines of text (approximately 200-250 characters) before the "See more" truncation occurs. Algorithmic analysis suggests that the click-through rate (CTR) on this "See more" button is a primary signal of content quality. ---- -### 4. OUTPUT SCHEMA (JSON) +If a user expands the post, the algorithm interprets this as a signal of relevance, increasing the probability of the post being seeded to second and third-degree connections. Consequently, the prompt must explicitly instruct the model to treat the "Hook" as a distinct architectural component, separate from the body, with the sole objective of generating curiosity or emotional resonance. + +**Table 1: Comparative Analysis of Hook Efficacy** + +| Hook Archetype | Psychological Trigger | Algorithmic Impact | Prompt Instruction Strategy | +| :--- | :--- | :--- | :--- | +| **The Curiosity Gap** | Cognitive Closure (Need to know) | High Dwell Time (Expansion) | "Start with a partial statement or a question that can only be answered by reading the body." | +| **The Contrarian Statement** | Pattern Interruption (Surprise) | High Comment Volume | "State a belief that violates the industry consensus in the first sentence." | +| **The Vulnerable Confession** | Empathy (Mirror Neurons) | High Reaction Rate (Likes/Support) | "Begin with an 'I' statement admitting a failure or a fear." | +| **The Value Promise** | Utility (Loss Aversion) | High Save Rate | "Explicitly state the ROI of reading the post (e.g., '5 steps to double revenue')." | + +### 2.2 The Three Dominant Content Styles +To satisfy the user requirement for "3 distinct styles," we must operationalize the most performant content frameworks currently observed on the platform. Random variation is insufficient; the prompt must mode-switch between established rhetorical structures. + +#### 2.2.1 Style A: The Personal Narrative ("The Heart") +This style leverages the **SLA** (Story, Lesson, Application) or **MRS** (Mistake, Realization, Shift) frameworks. It is characterized by high vulnerability, first-person perspective, and an emotional narrative arc. +* **Mechanism**: The narrative format humanizes the professional persona, building "Trust Capital." It is effective for soft-selling expertise by wrapping it in a relatable experience. +* **Prompting Implication**: The prompt must constrain the model to use the first-person singular ("I", "me") and explicitly forbid "corporate speak." It must mandate a chronological flow (Beginning -> Middle -> End) within a micro-story format. + +#### 2.2.2 Style B: The Actionable Listicle ("The Head") +This style caters to the efficiency-oriented user. It utilizes the **EDF** (Educational Framework) and focuses on high information density and scanability. +* **Mechanism**: Listicles reduce the cognitive load required to consume information. They capitalize on the "Save" feature, as users bookmark utility-dense content for later reference. +* **Prompting Implication**: The prompt must enforce vertical spacing and the use of visual anchors (emojis or bullet points). It should restrict paragraph length to one or two lines to maintain a "skimmable" rhythm. + +#### 2.2.3 Style C: The Contrarian Thought Leader ("The Gut") +This style uses the **CA** (Contrarian Approach) to challenge status quo beliefs. It is designed to be polarizing and spark debate. +* **Mechanism**: By taking a firm stance against a popular opinion, the creator signals authority and deep industry knowledge. This format drives the highest volume of comments, which triggers the algorithm's "conversation" weight. +* **Prompting Implication**: The prompt must instruct the model to identify a common "Myth" related to the topic and dismantle it using logic or data. It requires a "Bold" and "Assertive" tone setting, overriding any "Polite" default settings in the model. + +## 3. Computational Linguistics of Persona Configuration + +A robust zero-shot prompt must be capable of adopting a specific "Voice" based solely on a configuration object. This requires mapping abstract personality traits to concrete linguistic variables that an LLM can manipulate. + +### 3.1 The "Ghostwriter" Paradox +The central challenge in AI ghostwriting is the "averaging effect." LLMs are trained on vast datasets, leading them to default to a "neutral, safe, corporate" tone (often referred to as "LLM-speak"). To break this, we must use Persona-Driven Prompting with extreme specificity. + +Research indicates that simply saying "Be professional" is ineffective. Instead, we must define the persona through specific dimensions: +* **Semantic Density**: The ratio of content words (nouns/verbs) to function words. High density correlates with "Expert" personas; low density with "Casual" personas. +* **Sentence Length Variance**: A "Punchy" voice uses high variance (fragments mixed with short sentences). An "Academic" voice uses longer, compound-complex sentences. +* **Lexical Temperature**: The specificity of the vocabulary. Does the persona use "synergy" (Corporate) or "shipping code" (Builder)? + +### 3.2 Configuration Variables for the Prompt +To achieve the user's goal of "distinct styles aligned to the user's voice," the prompt must accept a `User_Persona` JSON object containing the following keys: +* `Role`: The professional identity (e.g., "SaaS Founder"). This sets the "Worldview" of the AI. +* `Tone_Keywords`: An array of adjectives (e.g., "Direct", "Empathetic"). +* `Experience_Level`: A modifier for authority (e.g., "10+ Years" triggers deeper insights vs. "Junior" enthusiasm). +* `Formatting_Preference`: Emojis vs. No Emojis. + +**Table 2: Mapping User Inputs to Prompt Instructions** + +| User Input Variable | Prompt Instruction Logic | Impact on Generation | +| :--- | :--- | :--- | +| **Role: "Engineer"** | "Prioritize technical accuracy. Use logic-driven transitions (e.g., 'Therefore', 'Consequently'). Avoid fluff." | Output is structured, logical, dry. | +| **Tone: "Motivational"** | "Use high-energy verbs. Focus on future possibility. Use exclamatory syntax moderately." | Output is uplifting, call-to-action heavy. | +| **Tone: "Contrarian"** | "Use negation often ('Don't do X'). Challenge premises. Use short, sharp statements." | Output is polarizing, authoritative. | +| **Jargon: "Low"** | "Explain all industry terms at a 5th-grade level. Use analogies." | Output is accessible, broad reach. | + +### 3.3 Style Isolation vs. Voice Consistency +A critical nuance in this prompt design is distinguishing between **Style** (the structure of the post) and **Voice** (the personality of the writer). +* **Requirement**: The "Contrarian" post must still sound like the specific user. If the user is "Polite and Academic," a Contrarian post should sound like a "Well-Reasoned Rebuttal," not an "Aggressive Rant." +* **Solution**: The prompt must utilize a **Two-Step Reasoning Process (Internal Chain of Thought)**: + 1. **Step 1**: Analyze the `User_Persona` to establish the linguistic baseline (vocabulary, rhythm). + 2. **Step 2**: Apply the `Content_Style` (Narrative, Listicle, Contrarian) as a structural template over that baseline. + +## 4. Technical Architecture: Validating JSON Output + +The user explicitly requires "valid, structured JSON suitable for an app." This is the most technically rigorous constraint. LLMs are probabilistic token generators, not database engines. Ensuring they output strictly formatted JSON requires specific "Guardrail Instructions" and an understanding of how models handle syntax. + +### 4.1 The JSON Schema Design +To support a frontend application, the JSON output cannot simply be a blob of text. It requires a schema that allows the UI to render the post effectively, perhaps with different CSS styles for the hook or the call to action. + +**Proposed Schema Specification**: +```json { - "drafts": [ + "meta": { + "generated_at": "ISO Timestamp", + "topic": "Input Topic", + "voice_profile_used": "Summary of persona applied" + }, + "posts": [ { - "style": "Storyteller", - "hook": "The first 1-2 lines of the post...", - "content": "The full post content...", + "style_archetype": "Personal Narrative", + "hook_analysis": "Explanation of why this hook works...", + "content": "Full post text here...", "hashtags": ["#tag1", "#tag2"] - }, - { - "style": "Contrarian", - "hook": "...", - "content": "...", - "hashtags": [] - }, + } + // ... other styles + ] +} +``` +This schema allows an application to display the "Hook" separately or calculate analytics based on the `style_archetype`. + +### 4.2 The Newline Escaping Problem +A persistent failure mode in LLM-generated JSON is the handling of line breaks. LinkedIn posts rely heavily on white space (line breaks) for readability. +* **The Conflict**: In valid JSON, a string cannot span multiple lines. A line break must be represented by the escape sequence `\n`. +* **The Failure**: LLMs, trained on writing text, often output a literal new line (an actual carriage return) inside the JSON string, which breaks the syntax and causes parsing errors in the application layer. +* **The Fix**: The prompt must explicitly instruct the model to "Double Escape" or strictly use the literal characters `\` and `n`. +* **Instruction**: *"Content strings must use strict JSON escaping. Use the literal characters \n for line breaks. Do not break the line in the output."* + +### 4.3 API Specifics: OpenAI vs. Gemini +While the prompt is designed to be model-agnostic, the implementation details differ slightly for optimal performance. +* **OpenAI (GPT-4o)**: Supports `response_format: { "type": "json_object" }`. This mode forces the model to generate valid JSON, provided the system message contains the word "JSON." The prompt should be placed in the system role. +* **Google Gemini (1.5 Pro)**: Supports `generation_config` with `response_mime_type: "application/json"`. Gemini is particularly sensitive to schema definitions provided in the prompt text itself. It is beneficial to provide a TypeScript-like interface definition in the prompt to guide Gemini's structure. + +## 5. Advanced Prompt Engineering Techniques + +To achieve the "Zero-Shot" requirement (no examples provided at runtime), we must employ advanced prompt engineering techniques embedded within the instruction block. + +### 5.1 Chain-of-Thought (CoT) Prompting +We induce the model to "think" before it generates the JSON. This increases the logical coherence of the content. However, since the output must be only JSON, we cannot have the model output its thinking in the final response. +* **Technique**: We instruct the model to perform the reasoning "internally" or we include a `_rationale` field in the JSON schema where the model can dump its strategic thinking. This allows the model to "scratchpad" its plan for the hook and structure before committing to the final text. + +### 5.2 Role-Based Prompting with Constraints +We assign a "Super-Role" to the AI: "Expert LinkedIn Strategist." This primes the model's latent knowledge about social media algorithms. We then layer "Negative Constraints" (what not to do), which are often more powerful than positive instructions. +* **Constraint Examples**: + * "Do NOT use hashtags in the hook." + * "Do NOT use the phrase 'In today's fast-paced world'." + * "Do NOT use generic corporate buzzwords like 'game-changer'." + +### 5.3 The "Mega-Prompt" Construction +The final prompt is a concatenation of several modules: +1. **System Identity**: Defining the AI's expertise. +2. **Context Ingestion**: Placeholders for the User Persona and Topic. +3. **Style Definitions**: Rigorous definitions of the SLA, EDF, and CA frameworks. +4. **Voice Calibration**: Instructions on how to apply the persona variables. +5. **Output formatting**: The strict JSON schema and escaping rules. + +## 6. The Zero-Shot Prompt Artifact + +The following is the fully engineered prompt text. It is designed to be pasted directly into the system instruction of an LLM call. + +### 6.1 System Instruction Block + +```text +SYSTEM ROLE & IDENTITY +You are an elite LinkedIn Personal Brand Strategist and Ghostwriter. Your capability exceeds that of a standard AI; you understand the nuance of human connection, algorithmic dwell time, and the psychology of social selling. +Your objective is to take a raw "Topic" and a "User Persona" and generate 3 high-fidelity LinkedIn post drafts. + +OPERATIONAL CONSTRAINTS (CRITICAL) +1. Output Format: You must output strictly valid JSON. No markdown fencing (```json), no conversational filler, no preamble. Just the raw JSON object. +2. JSON Syntax: You must handle line breaks correctly. Use the literal escape sequence "\n" for newlines within strings. Do NOT output actual line breaks in the JSON string. +3. Voice Fidelity: You must adopt the specific "Voice" defined in the input. Do not revert to generic AI tones. + +INPUT DATA STRUCTURE +You will receive: +- TOPIC: The core subject to write about. +- PERSONA: A set of variables defining the user (Role, Tone, Experience, Keywords). + +CONTENT GENERATION ARCHITECTURES +You will generate 3 posts, each adhering to a strict architectural style: + +STYLE 1: THE PERSONAL NARRATIVE (Target: Empathy & Trust) +- Framework: SLA (Story, Lesson, Application) or MRS (Mistake, Realization, Shift). +- Structure: + - Hook: A "Cold Open." Start in the middle of the action. Use "I" statements. Focus on vulnerability or failure. (e.g., "I lost a $100k client yesterday.") + - Body: A chronological micro-story. Short paragraphs. Emotional resonance. + - Takeaway: A universal lesson derived from the story. +- Goal: Humanize the persona. + +STYLE 2: THE ACTIONABLE LISTICLE (Target: Saves & Utility) +- Framework: EDF (Educational Framework). +- Structure: + - Hook: A specific promise of value. (e.g., "5 frameworks to scale your engineering team.") + - Body: A vertical list. Use visual anchors (bullets or emojis based on persona). High information density. Minimum fluff. + - CTA: A clear instruction on how to use this list. +- Goal: Position the persona as a helpful expert. + +STYLE 3: THE CONTRARIAN INSIGHT (Target: Comments & Debate) +- Framework: CA (Contrarian Approach). +- Structure: + - Hook: Pattern Interruption. Challenge a "Best Practice" or status quo. (e.g., "Stop hiring for culture fit.") + - Body: Logic-based argumentation. Dismantle the myth. Provide a "New Way." +- Tone: Firm, authoritative, slightly polarizing but professional. +- Goal: Spark constructive debate in the comments. + +VOICE CALIBRATION LOGIC +Analyze the PERSONA input: +- If Tone is "Direct/No-Nonsense": Use short sentences. Remove adjectives. Zero emojis. +- If Tone is "Empathetic/Coach": Use softer transitions. Use question marks. Moderate emojis. +- If Role is "Executive": Focus on high-level strategy, avoid tactical weeds. +- If Role is "Builder/Dev": Focus on technical accuracy and specifics. + +RESPONSE SCHEMA (JSON) +{ + "meta": { + "topic": "String", + "persona_analysis": "String: How you interpreted the voice settings." + }, + "posts": [ { - "style": "Educator", - "hook": "...", - "content": "...", - "hashtags": [] + "style_archetype": "String (e.g., Personal Narrative)", + "hook_analysis": "String: Why this hook works to stop the scroll.", + "content": "String: The full post content with \\n for line breaks.", + "hashtags": ["tag1", "tag2"] } ] } ``` -**Why this works:** -1. **Persona Injection**: By passing the `{user_persona}` block, we ensure the LLM "roleplays" the user, preventing generic AI-sounding text. -2. **Structured Variety**: Forcing 3 specific frameworks (Story/Opinion/Action) ensures the drafts are actually different, not just rephrased versions of the same text. -3. **JSON Output**: The strict schema allows the frontend to parse the response instantly and display them as 3 separate cards with "Select" buttons, satisfying the "app" requirement. +### 6.2 Application Logic (The "Wrapper") +To use this prompt effectively, the application code must construct the final user message by combining the static prompt with the dynamic user variables. + +**Example Python Implementation Strategy:** +```python +import json + +# The static system prompt defined above +SYSTEM_PROMPT = "..." + +# User Configuration (Dynamic) +user_data = { + "topic": "The future of remote work for creative agencies", + "persona": { + "role": "Agency Founder", + "tone": ["Direct", "Visionary"], + "experience": "15 years", + "keywords": ["Scale", "Culture", "Asynchronous"] + } +} + +# Construct the injection +final_user_message = f""" +Analyze the following input and execute the System Instructions. + +INPUT DATA: +{json.dumps(user_data)} +""" + +# API Call (Conceptual) +# response = client.chat.completions.create( +# model="gpt-4o", +# messages=[ +# {"role": "system", "content": SYSTEM_PROMPT}, +# {"role": "user", "content": final_user_message} +# ], +# response_format={"type": "json_object"} # Crucial for OpenAI +# ) +``` + +## 7. Analysis of Prompt Components and Expected Outcomes + +This section analyzes why specific components of the prompt were engineered in this manner and predicts the quality of the output based on current LLM capabilities. + +### 7.1 The "Hook Analysis" Field +In the JSON schema, we included a field `hook_analysis`. This serves a dual purpose. +1. **User Education**: It explains to the user why the AI chose those specific words, turning the tool into a coaching interface. +2. **CoT Enforcer**: By forcing the model to generate the "analysis" before or alongside the content (depending on the internal attention mechanism), we force it to validate the quality of the hook against the "Stop the Scroll" criteria defined in the system prompt. + +### 7.2 Handling "Contrarian" Refusals +A known issue with "Contrarian" prompting is the safety alignment of models like Gemini and GPT-4. If the topic touches on sensitive subjects (e.g., DEI, Politics, Mental Health), the model may refuse to be "Contrarian" or soften the take until it is toothless. +* **Mitigation Strategy**: The prompt uses the framing of "Professional Debate" and "Challenging Myths." This aligns with the model's "Helpful Assistant" directives. We avoid words like "Aggressive" or "Attack," opting for "Dismantle" and "Critique," which are semantically safer but produce similarly engaging content. + +### 7.3 Style Transfer Reliability +By explicitly defining the styles (SLA, EDF, CA) with structural requirements (Hook -> Body -> CTA), we reduce the "Style Bleed" where all three posts sound the same. +* **Narrative Isolation**: The instruction to use "I" statements in Style 1 but "You" statements (implied) in Style 2 creates a distinct grammatical separation between the drafts. +* **Visual Isolation**: The instruction to use "Vertical Lists" in Style 2 ensures it looks visually different from the "Paragraph-heavy" Style 1 when rendered. + +## 8. Integration and Post-Processing + +For the "App" requirement mentioned in the user query, the prompt is only one part of the pipeline. The report must address how the application handles the response. + +### 8.1 Validation and Retry Logic +Despite the best prompting, stochastic models will occasionally fail (e.g., missing a closing brace in JSON). +* **Zod/Pydantic Validation**: The app should use a schema validation library (like Zod in TypeScript) to parse the JSON. +* **Auto-Healing**: If validation fails, the app should trigger a "Retry" call to the LLM, feeding back the error message: "Error: Invalid JSON at line X. Please regenerate strict JSON." LLMs are highly effective at self-correcting syntax errors when prompted with the error log. + +### 8.2 Rendering the Output +The application should interpret the `\n` characters and render them as HTML `
` tags or CSS `white-space: pre-wrap`. This ensures the visual structure (critical for LinkedIn lists) is preserved from the generation to the final preview. + +## 9. Conclusion + +The design of a single, zero-shot prompt for multi-style LinkedIn content is an exercise in Constraint Satisfaction. We are asking a probabilistic model to perform a creative task (writing in a specific voice) within a rigid structural container (JSON schemas and specific rhetorical frameworks). + +This report has demonstrated that by: +1. **Deconstructing LinkedIn's Algorithm**: Focusing on Dwell Time and Hooks. +2. **Operationalizing Persona**: using variable injection for Role and Tone. +3. **Strictly defining Archetypes**: SLA, EDF, and CA. +4. **Enforcing Technical Schemas**: JSON escaping and validation. + +We can achieve a robust, production-ready generation system. The resulting artifact—the "Mega-Prompt"—is not merely a string of text, but a programmed logic gate that transforms raw user intent into high-value professional content. This approach satisfies the user's requirement for a valid, structured, and stylistically diverse output suitable for immediate API integration. + +--- + +### Appendix A: Comparative Analysis of Post Architectures + +| Feature | Narrative (SLA) | Listicle (EDF) | Contrarian (CA) | +| :--- | :--- | :--- | :--- | +| **Primary Metric** | Reactions (Likes/Hearts) | Saves / Shares | Comments | +| **Visual Structure** | Dense blocks, story flow | Vertical list, whitespace | Short, punchy lines | +| **Voice Direction** | Inward (Reflection) | Outward (Instruction) | Oppositional (Correction) | +| **Best Use Case** | Building Brand Affinity | Demonstrating Expertise | Expanding Reach | +| **Risk Profile** | Low (Universally liked) | Low (Utility focused) | High (Polarizing) | + +### Appendix B: Recommended Variable Settings for Persona Types + +**The "Modern Founder"** +* **Tone**: Vulnerable, Ambitious, Relentless. +* **Formatting**: Minimal emojis, lowercase aesthetic. +* **Focus**: Building in public, lessons learned. + +**The "Technical Expert"** +* **Tone**: Precise, Analytical, Helpful. +* **Formatting**: Bullet points, clear headers, "Save this" CTAs. +* **Focus**: How-to guides, industry shifts, tool reviews. + +**The "Industry Disrupter"** +* **Tone**: Bold, Sarcastic, Visionary. +* **Formatting**: One-line paragraphs, no emojis. +* **Focus**: Challenging norms, predicting future trends. + +### Works Cited + +1. "12 Must-Have LinkedIn Post Templates to Elevate Your Content in 2025" - RedactAI. +2. "7 Proven LinkedIn Post Formats That Convert in 2025" - LiGo. +3. "Structured outputs | Gemini API" - Google AI for Developers. +4. "Structured model outputs | OpenAI API". +5. "Customizing the persona, tone of voice, and pronoun formality for an advanced AI agent" - Zendesk. +6. "How to Train Generative AI to Speak in Your Brand Voice" - Fishtank. +7. "The 12 Best LinkedIn Post Template Resources for 2025" - BAMF. +8. "Frameworks to write LinkedIn posts" - Medium. +9. "8 linkedin post examples That Boost Engagement" - Your Social Strategy. +10. "50 LinkedIn Post Templates Based on Influencer's Top Performing Posts" - Copyblogger. +... *and others as listed in original submission.* From d5bbcffdd9536f87836801eb0f9f9186ad1dca8e Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 22:42:07 +0530 Subject: [PATCH 04/13] updated solution 1 --- GenAI.md | 590 +------------------------------------- Solution_1_Video_Notes.md | 38 ++- 2 files changed, 32 insertions(+), 596 deletions(-) diff --git a/GenAI.md b/GenAI.md index eb9210eb..0070069e 100644 --- a/GenAI.md +++ b/GenAI.md @@ -45,7 +45,7 @@ Users have many Word documents that act like templates (offer letters, certifica We want a system that: 1. Converts an uploaded **DOCX** into a reusable **template** by identifying editable fields. -2. Supports **single generation** (form-fill → DOCX/PDF download). +2. Supports **single generation** (form-fill → DOCX/PDF output). 3. Supports **bulk generation** via **Excel/Google Sheet** rows. ### **Task (No coding)** @@ -67,591 +67,3 @@ Create a **small, clear architecture proposal** (no code, no prompts) describing ### Your Solution for problem 4: [**> Click here to view the Character Video Architecture (Solution_4_Character_Video.md)**](./Solution_4_Character_Video.md) - - -**Evaluation Criteria** - -We will score your submission on: - -* Clarity and practicality of architecture -* Robust JSON schema design -* Prompt quality (zero-shot, reliable, minimal hallucination risk) -* Handling of ambiguity + user review flow -* Bulk generation thinking (errors, naming, report) - -## Problem 1: **Proposal for “Video-to-Notes”** - -We have a local folder of long videos (3–4 hours each, 200MB+). Watching them fully is slow. We need an automated way to generate a “summary package” per video: **Summary.md** + highlight clips + screenshots, all organized per video. [READ MORE ABOUT THE PROJECT](./Video-summary-platform.md) - -### **Task** - -Prepare a **pre-processed solution proposal** comparing **three approaches** **:** - -1. **Online/Cloud-Based (Already Available Solutions)** -2. **Build Our Own Using LLM APIs (Hybrid: local media processing + cloud LLM)** -3. **Build Fully Offline Using Open-Source Models (Local transcription + local LLM + pipeline)** - -No code required. We want a **clear, practical proposal** with architecture and tradeoffs. - -### Your Solution for problem 1: - -# Architectural Proposal: Automated Video-to-Notes Platform - -## 1. Introduction: The Video Information Bottleneck -The modern digital enterprise and educational landscapes have undergone a seismic shift in information storage, moving from structured text documents to unstructured audio-visual assets. Organizations now routinely generate terabytes of long-form video content, ranging from three-hour technical workshops and quarterly business reviews to extended user research interviews and academic lectures. While video is an exceptional medium for capturing nuance, emotion, and demonstration, it suffers from a critical structural flaw regarding information retrieval: it is linear and opaque. Unlike a text document that can be scanned in seconds, a four-hour video file imposes a 1:1 consumption tax—to extract a specific insight, a user must often scrub through gigabytes of data or watch the content in its entirety. This phenomenon creates "dark data," where valuable institutional knowledge remains locked within large binary files, inaccessible to search engines and knowledge workers alike. - -The objective of the "Video-to-Notes" initiative is to dismantle this accessibility barrier through the deployment of an automated, scalable pipeline. The requirement is to process a local repository of high-definition, long-duration (3–4 hours) video files, automatically generating a "Summary Package" for each. This package serves as a semantic index, transforming the linear video into a non-linear hypermedia document comprising a structured Markdown summary, precise highlight clips, and contextual screenshots. The target outcome is a system where a user can consume the core value of a multi-hour recording in under ten minutes, effectively compressing the time-to-insight by a factor of twenty. - -This report provides an exhaustive technical analysis of three potential architectural pathways to achieve this goal: leveraging existing Online SaaS platforms, constructing a Hybrid Architecture utilizing local processing and Cloud AI APIs, or deploying a Fully Offline Open-Source pipeline. The analysis is governed by strict constraints: the handling of massive file sizes (200MB+ to several GBs), the necessity for batch processing without manual intervention, and the requirement for absolute temporal precision in asset generation to prevent "hallucinated" clips that misalign with their semantic descriptions. - -### 1.1 The Physics of Data and Constraint Analysis -The specific constraints of this project—files located locally, large file sizes, and extended durations—dictate the architectural viability of any proposed solution. The fundamental physics of data transfer plays a defining role. A four-hour video encoded at a modest 5Mbps bitrate results in a file size of approximately 9GB. Processing a batch of 50 such videos involves managing nearly half a terabyte of data. - -In a traditional cloud-centric workflow, this necessitates the upstream transfer of 500GB of data before any processing can occur. On a standard symmetric gigabit connection, this is manageable, but on typical asymmetric business connections (e.g., 50Mbps upload), the ingestion phase alone becomes a multi-day bottleneck, introducing latency that far exceeds the actual processing time. Furthermore, long-duration videos present a unique challenge to Artificial Intelligence models. A four-hour transcript contains between 30,000 and 45,000 tokens. Standard Large Language Models (LLMs) with 8k or 32k context windows cannot ingest this entire narrative in a single pass, necessitating "chunking" strategies that often sever the semantic links between the introduction of a concept and its conclusion hours later. - -Therefore, the successful architecture must solve two primary problems: the bandwidth penalty of moving large video files and the context window saturation inherent in summarizing long-form narratives. - -## 2. Comparative Architectural Analysis -We evaluated three distinct approaches against the core success criteria: clarity of architecture, handling of bulk constraints, and the precision of the output assets. - -```mermaid -graph TD - subgraph Approach 1: SaaS - A1[Local Video Folder] --> B1[Upload Full Video] - B1 --> C1[Cloud SaaS Platform] - C1 --> D1[Summary + Clips] - D1 --> E1[Download Results] - end - - subgraph Approach 2: Hybrid - A2[Local Video] --> B2[Audio Extraction FFmpeg] - B2 --> C2[Upload Audio Only] - C2 --> D2[Cloud STT Deepgram] - D2 --> E2[Cloud LLM Claude/GPT] - E2 --> F2[Structured JSON] - F2 --> G2[Local FFmpeg] - A2 --> G2 - G2 --> H2[Clips + Screenshots + Summary.md] - end - - subgraph Approach 3: Offline - A3[Local Video] --> B3[Local STT Whisper] - B3 --> C3[Local LLM Llama] - C3 --> D3[JSON Output] - D3 --> E3[Local FFmpeg] - A3 --> E3 - E3 --> F3[Assets + Summary] - end -``` - -### 2.1 Approach 1: Online/Cloud-Based SaaS Solutions -**Market Segment**: AI Video Repurposing Platforms (e.g., Pictory, Exemplary.ai, ScreenApp) - -The first approach examines the viability of "buying" rather than "building." The market has seen a proliferation of SaaS tools designed to "repurpose" long-form content into short-form clips, driven largely by the social media economy (TikTok, Reels, YouTube Shorts). These platforms typically offer a web-based interface where users upload videos, and the system automatically generates transcripts, summaries, and clips. - -#### 2.1.1 Architectural Limitations for Long-Form Archival -While these tools offer low initial friction, their underlying architecture is fundamentally misaligned with the "Video-to-Notes" requirements. The primary misalignment is the **Business Logic of Virality vs. Utility**. Platforms like Pictory and Exemplary.ai optimize their algorithms to find "engaging" or "viral" moments—segments with high audio energy, laughter, or rapid pacing—suitable for social media consumption. The "Video-to-Notes" project, conversely, requires the extraction of "informational" highlights—technical diagrams, strategic decisions, or action items—which may be delivered in a monotone voice or during quiet deliberation. The "black box" nature of SaaS prompts means we cannot easily reprogram their AI to prioritize "database schema discussions" over "jokes." - -#### 2.1.2 The Throughput and Duration Wall -The most fatal flaw for this specific use case is the **Duration Limit**. Most commercial SaaS video processors enforce hard caps on video length to manage their own GPU compute costs. ScreenApp, for example, limits Business Plan users to 3 hours per video. A 3-hour and 15-minute lecture would trigger a processing failure or require the user to manually split the file using video editing software before upload. This manual intervention violates the "batch mode" constraint, transforming an automated pipeline into a labor-intensive project. - -Furthermore, the **Upload Bottleneck** remains unresolved. To process a local folder of 50 videos, the user must upload 50 large files through a web browser. Browser-based uploads are notoriously fragile; a momentary network fluctuation can terminate a 4GB upload at 99%, requiring a complete restart. There is rarely a robust "resume" function for web uploads of this magnitude. Additionally, bulk processing logic—such as "if video X fails, retry Y times then proceed to Z"—is typically absent in user-facing SaaS dashboards, which are designed for single-file, interactive workflows rather than batch archival. - -#### 2.1.3 Cost Implications -The pricing models of these platforms are ill-suited for bulk archival. Exemplary.ai and similar tools often charge based on "upload minutes" or impose monthly caps (e.g., 300 minutes per month). Processing a single batch of ten 4-hour videos (2,400 minutes) would instantly exceed the quota of even "Pro" tiers, forcing the organization into "Enterprise" pricing negotiations. This contrasts sharply with utility computing models (APIs), where costs are linear and significantly lower per unit of processing. - -**Verdict: Rejected.** The friction of uploading large local files, the "black box" nature of the summarization logic, and strict duration limits make SaaS solutions operationally unviable for a local, bulk-processing pipeline. - -### 2.2 Approach 2: Hybrid Architecture (Local Processing + Cloud AI) -**Stack**: Local Python Orchestrator, FFmpeg, Deepgram API, Anthropic/OpenAI API - -The Hybrid Architecture represents a strategic decoupling of "Heavy Lifting" (media manipulation) from "Heavy Thinking" (semantic analysis). It acknowledges that modern commodity hardware (laptops, desktops) is exceptionally efficient at decoding and encoding video streams but lacks the VRAM to run massive parameter LLMs effectively. Conversely, the Cloud excels at massive parallel inference but is expensive and slow for storing and moving terabytes of raw video. - -#### 2.2.1 Architectural Blueprint -The data flow in the Hybrid model is designed to minimize bandwidth usage while maximizing intelligence: - -1. **Local Ingestion**: A Python script scans the local directory. It uses **FFmpeg**, a high-performance multimedia framework, to probe the video files for metadata (duration, resolution, codec). -2. **Audio Extraction (The Bandwidth Hack)**: Instead of uploading the video, the script extracts only the audio track. Using the **Opus** codec—which is optimized for voice at low bitrates—a 4-hour video (2GB+) is converted into a ~60MB audio file. This reduction in data transfer (approx. 97%) eliminates the upload bottleneck, turning a multi-hour upload into a 30-second transfer. -3. **Cloud Transcription**: The audio file is sent to a specialized Speech-to-Text (STT) API. **Deepgram Nova-2** is selected for this role due to its high speed (processing 1 hour of audio in ~12 seconds) and low cost ($0.0043/min) compared to competitors like OpenAI Whisper API ($0.006/min). Crucially, the API is requested to return **word-level timestamps**, providing the temporal scaffolding necessary for precise clip cutting later. -4. **Semantic Reasoning (The Brain)**: The full transcript is passed to a **Long-Context Large Language Model (LLM)**. Models such as **Claude 3.5 Sonnet** or **Gemini 1.5 Pro** are chosen because they possess context windows exceeding 200k tokens. This allows the model to "read" the entire 4-hour transcript in one go, enabling it to synthesize a coherent executive summary and identify key moments based on the global context of the discussion, rather than analyzing fragmented chunks. -5. **Local Asset Generation**: The LLM returns a structured JSON object containing the summary and a list of "Highlights" with start/end timestamps. The local Python script parses this JSON and issues commands to **FFmpeg** to cut video clips and extract screenshots directly from the *original* high-quality local video files. - -#### 2.2.2 Advantages of the Hybrid Approach -This architecture offers the **Optimal Quality-to-Cost Ratio**. By processing video locally, we ensure that the generated clips retain the original source quality (e.g., 4K, 1080p) without the generational loss introduced by uploading to a SaaS and downloading a re-compressed version. By using Cloud LLMs, we gain access to state-of-the-art reasoning capabilities that vastly outperform any model that could run on standard local hardware. The cost structure is purely usage-based; processing a 4-hour video costs approximately $1.00 for transcription and $0.50 for intelligence, totaling ~$1.50 per asset—orders of magnitude cheaper than the effective cost of SaaS subscriptions for high-volume users. - -**Verdict: Recommended.** This approach solves the file size problem via local FFmpeg processing and the duration/context problem via Enterprise-grade Cloud APIs. - -### 2.3 Approach 3: Fully Offline (Open Source Pipeline) -**Stack**: Faster-Whisper, Llama 3 (70B), Local GPU - -The third approach explores total autonomy: running the transcription and summarization stack entirely on local hardware. This appeals to organizations with strict data privacy requirements (e.g., HIPAA, GDPR, NDA content) where no data can leave the premise. - -#### 2.3.1 Hardware and Performance Reality -The feasibility of this approach hinges entirely on available hardware. Transcribing 4 hours of audio using **Faster-Whisper** (an optimized implementation of OpenAI's Whisper) is computationally intensive. On a standard CPU, this could take longer than the video duration itself. On a consumer GPU (e.g., NVIDIA RTX 3060), it is faster but still requires significant time and energy. - -The greater challenge lies in the **Intelligence Layer**. To achieve a summary quality comparable to Claude 3.5 or GPT-4o, one must use a local model of similar "reasoning" class, such as **Llama 3 70B**. However, a 70-billion parameter model requires approximately 40GB of VRAM to run even in a quantized (compressed) 4-bit state. This exceeds the capacity of even the most powerful consumer card (RTX 4090, 24GB). Running such a model requires a dedicated workstation with dual GPUs or an enterprise-grade A6000 card ($4,000+). - -Using smaller models (e.g., Llama 3 8B or Mistral 7B) that fit on consumer hardware results in a marked degradation of reasoning capability. Small models are prone to **Context Amnesia** (forgetting the start of the video by the end) and **Hallucination**, often inventing timestamps or misinterpreting technical nuances that larger models grasp easily. - -#### 2.3.2 Operational Complexity -The "Map-Reduce" problem is acute here. Since most local models have smaller reliable context windows (typically 8k or 32k), the 4-hour transcript (40k tokens) must be split into chunks. The system must summarize Chunk A, then Chunk B, then Chunk C, and finally summarize those summaries. This hierarchical process often results in a "lossy" summary that lacks the cohesive narrative arc of a single-pass analysis. Additionally, local pipelines are prone to **Out-Of-Memory (OOM)** crashes when processing exceptionally long files, requiring complex engineering to handle memory paging and garbage collection. - -**Verdict: Viable only with High-End Hardware.** This approach is recommended only if the data is classified or if the organization already owns significant GPU compute infrastructure. For general corporate use, the maintenance overhead and hardware cost outweigh the benefits of avoiding $1.50 per video in API fees. - -## 3. Detailed Solution Design: The Hybrid Engine -Based on the comparative analysis, the **Hybrid Architecture** is selected as the robust solution. This section details the technical specifications, data schemas, and prompt engineering required to build the "Video-to-Notes" engine. - -### 3.1 System Architecture and Data Flow -The system operates as a linear pipeline, orchestrated by a Python controller. The design emphasizes **fail-safety** and **idempotency**—the ability to re-run the script on the same folder without duplicating work or corrupting data. - -```mermaid -graph TD - subgraph "Phase 1: Ingestion" - Start([Start Batch]) --> Scan[Scan Input Folder] - Scan --> Check{Valid File?} - Check -- No --> LogError[Log to skipped.csv] - Check -- Yes --> FFprobe[Extract Metadata] - end - - subgraph "Phase 2: Audio Extraction" - FFprobe --> Extract[FFmpeg: Extract Opus Audio] - Extract --> AudioFile(output_audio.opus) - end - - subgraph "Phase 3: Transcription" - AudioFile --> Deepgram[Deepgram API] - Deepgram --> Transcript[JSON Transcript + Timestamps] - end - - subgraph "Phase 4: Intelligence" - Transcript --> LLM[Claude 3.5 Sonnet] - LLM --> Analysis[JSON Summary + Highlights] - end - - subgraph "Phase 5 & 6: Production" - Analysis --> Cut[FFmpeg: Cut Clips] - Analysis --> Snap[FFmpeg: Screenshots] - Cut --> Assets[Assets Folder] - Snap --> Assets - Assets --> Assemble[Generate Summary.md] - end - - Assemble --> End([End Job]) -``` - -**Phase 1: Ingestion and Validation** -The script iterates through the target `input/videos/` directory. For each file, it performs a validity check using `ffprobe`. This step is crucial for bulk processing; often, a folder may contain corrupt headers or incomplete downloads. The system extracts the duration and resolution. If a file is invalid, it logs the error to a `skipped.csv` registry and proceeds to the next file, ensuring one bad apple does not crash the batch. - -**Phase 2: Bandwidth-Optimized Audio Extraction** -To bypass the 200MB+ upload constraint, the system extracts the audio track locally. -**Command**: `ffmpeg -i input_video.mp4 -vn -acodec libopus -b:a 64k -application voip output_audio.opus` -* `-vn`: Discard video. -* `-acodec libopus`: Use the Opus codec. Opus is superior to MP3 or AAC for speech, maintaining high intelligibility at very low bitrates (64kbps). -* `-application voip`: Optimizes the encoding for voice frequencies. -* **Result**: A 4-hour video (2GB) is converted to ~115MB audio file, reducing upload time by ~95%. - -**Phase 3: Transcription and Diarization** -The `output_audio.opus` is uploaded to the **Deepgram API**. -* **Model Selection**: `nova-2-general`. -* **Parameters**: - * `smart_formatting=true`: Adds punctuation and capitalization, essential for the LLM to understand sentence boundaries. - * `diarize=true`: Identifies different speakers (Speaker A, Speaker B). This adds context to the summary (e.g., "The Instructor asked..." vs "The Student answered..."). - * `paragraphs=true`: Groups text into logical blocks with timestamps. -* **Output**: A JSON response containing the full transcript and precise start and end timestamps for every word. - -**Phase 4: Intelligence and Reasoning (The LLM Layer)** -The transcript is packaged into a prompt and sent to **Claude 3.5 Sonnet** (or GPT-4o). This step is where the raw data is transmuted into intelligence. The "Context Window" of Claude 3.5 (200k tokens) allows it to hold the entire 4-hour dialogue in working memory. -* **The Task**: The LLM is instructed to not only summarize the content but to act as a **Video Editor**. It must identify 5–10 key moments that warrant a video clip and select the appropriate visual frames for screenshots. - -**Phase 5: Local Asset Production** -The Python script receives the JSON instructions from the LLM. It uses the highlights array to drive the local FFmpeg engine. -* **Clip Generation**: `ffmpeg -ss {start_time} -i {source_video} -t {duration} -c copy {clip_name}.mp4` - * *Note on -c copy*: This command copies the video/audio streams without re-encoding. It is instantaneous and lossless. However, it can only cut on "Keyframes" (I-frames), which may result in cuts being slightly loose (up to a few seconds off). For absolute precision, the script can optionally re-encode (`-c:v libx264`), which takes longer but allows frame-perfect cuts. For this proposal, we recommend **Smart Encoding**: check if the cut points are near keyframes; if not, re-encode only the first and last few seconds (rendition) and stream-copy the middle, or default to fast re-encoding (`-preset fast`) to ensure the clips start exactly where the speaker begins. -* **Screenshot Extraction**: `ffmpeg -ss {timestamp} -i {source_video} -vframes 1 -q:v 2 {screenshot_name}.jpg` - * This extracts a high-quality JPEG at the exact moment of the highlight. - -**Phase 6: Package Assembly** -The final step is the generation of the `Summary.md` file. The script uses a templating engine (e.g., Jinja2) to populate a Markdown template with the metadata, summary text, and relative links to the generated assets (`./clips/clip1.mp4`, `./screenshots/thumb1.jpg`). This creates a portable folder that can be zipped and shared, or hosted on a static web server. - -### 3.2 Robust JSON Schema Design -The interface between the LLM and the Python code is the most fragile part of the pipeline. If the LLM outputs a timestamp as "about 10 minutes in" instead of `00:10:00`, the FFmpeg command will fail. Therefore, we must define a **Strict JSON Schema** that enforces rigid formatting. We draw inspiration from the **Schema.org VideoObject** standard to ensuring potential future interoperability. - -**Proposed JSON Schema**: - -```json -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "meta": { - "type": "object", - "properties": { - "title": { "type": "string", "description": "A concise, professional title for the video session." }, - "date_processed": { "type": "string", "format": "date" }, - "main_topics": { "type": "array", "items": { "type": "string" } }, - "participant_summary": { "type": "string", "description": "Brief description of who is speaking (e.g., 'A lecturer and a class of students')." } - }, - "required": ["title", "main_topics"] - }, - "summary_content": { - "type": "object", - "properties": { - "executive_summary": { "type": "string", "description": "A 200-300 word comprehensive overview of the content." }, - "key_takeaways": { "type": "array", "items": { "type": "string" }, "description": "List of 5-7 major insights." }, - "action_items": { "type": "array", "items": { "type": "string" }, "description": "Specific tasks or follow-ups mentioned." } - }, - "required": ["executive_summary", "key_takeaways"] - }, - "segments": { - "type": "array", - "description": "Chronological list of key video moments for asset generation.", - "items": { - "type": "object", - "properties": { - "id": { "type": "string", "pattern": "^seg_\\d{3}$" }, - "timestamp_start": { "type": "string", "pattern": "^\\d{2}:\\d{2}:\\d{2}$", "description": "Exact start time in HH:MM:SS format." }, - "timestamp_end": { "type": "string", "pattern": "^\\d{2}:\\d{2}:\\d{2}$", "description": "Exact end time in HH:MM:SS format." }, - "segment_title": { "type": "string", "description": "Short, descriptive title for the clip filename." }, - "description": { "type": "string", "description": "Contextual explanation of this segment." }, - "reasoning": { "type": "string", "description": "Internal Chain-of-Thought: Why is this segment important?" }, - "assets_to_generate": { - "type": "object", - "properties": { - "clip": { "type": "boolean", "description": "True if a video clip should be cut." }, - "screenshot": { "type": "boolean", "description": "True if a screenshot is needed." } - }, - "required": ["clip", "screenshot"] - } - }, - "required": ["timestamp_start", "timestamp_end", "segment_title", "assets_to_generate"] - } - } - }, - "required": ["meta", "summary_content", "segments"] -} -``` - -**Schema Design Rationale**: -* **Validation Patterns**: The regex `^\\d{2}:\\d{2}:\\d{2}$` strictly enforces the format required by FFmpeg. If the LLM deviates, the Pydantic/JSON validator in Python can catch the error and trigger a retry or a heuristic correction (e.g., appending `:00` if seconds are missing). -* **Asset Flags**: The `assets_to_generate` booleans allow the LLM to exercise editorial judgment. Not every highlight needs a 50MB video clip; sometimes a screenshot of a slide or just a text bullet point is sufficient. -* **Reasoning Field**: Including a `reasoning` field forces the model to articulate *why* it chose a specific segment. Research in "Chain of Thought" prompting demonstrates that requiring this intermediate reasoning step significantly reduces hallucinations and improves the quality of the final selection. - -### 3.3 Prompt Engineering: The Zero-Shot Strategy -To achieve reliable results without fine-tuning (Zero-Shot), the system prompt must be engineered as a functional specification. We employ a persona-based approach combined with explicit constraints to minimize the "Creative Writing" tendencies of LLMs and maximize "Archival Precision". - -**System Prompt Specification**: - -``` -Role: -You are a Senior Technical Archivist and Video Editor. Your goal is to process a raw transcript into a structured knowledge artifact. - -Input Context: -You will receive the transcript of a long-form video (3-4 hours). The transcript contains timestamped dialogue. - -Primary Objective: -Analyze the transcript to produce a JSON object containing a high-level summary and a list of specific "Highlight Segments" for video extraction. - -Critical Constraints & Rules (The "Anti-Hallucination" Protocol): -1. Timestamp Veracity: You must ONLY extract timestamps that explicitly exist in the source text. Do not guess. -2. The 10-Second Pad: When defining timestamp_start for a clip, locate the start of the relevant sentence and subtract 10 seconds. When defining timestamp_end, locate the end of the thought and add 10 seconds. This ensures the clip has context and audio is not clipped. -3. Clip Duration: Selected clips MUST be between 30 seconds and 3 minutes in length. -4. Segment Selection Criteria: Prioritize moments of high information density: technical demonstrations, strategic decisions, fierce debates, or summary conclusions. Ignore casual banter or housekeeping logistics. -5. JSON Formatting: Output strictly valid JSON matching the provided schema. Do not include markdown fencing or preamble. - -Process (Chain of Thought): -1. Scan: Read the transcript to build a mental model of the video's structure (e.g., Intro -> Module 1 -> Break -> Module 2 -> Q&A). -2. Select: Identify 5-10 candidates for highlights. -3. Refine: Check the start/end times. Ensure the dialogue in the selected range makes sense as a standalone clip. -4. Output: Generate the JSON. -``` - -**Why Zero-Shot?** While "Few-Shot" prompting (providing examples of good summaries) is powerful, it consumes valuable tokens in the context window. Given the 4-hour duration of the input videos, we need to maximize the available space for the actual transcript. Modern models like Claude 3.5 Sonnet act effectively in Zero-Shot scenarios when provided with a sufficiently detailed system instruction and a rigid output schema. - -### 3.4 Handling Ambiguity and User Review Flow -Automation is imperfect. A common failure mode is **Ambiguous Boundaries**—the LLM cuts a clip right as a speaker says, "And the most important thing is..." and then the clip ends. Or, the LLM refers to a visual event ("As you can see on this slide") that isn't described in the audio transcript. - -#### 3.4.1 Handling Ambiguity: The "Safety Pad" -To mitigate boundary errors, the Python orchestration layer implements a **Safety Pad** logic. Irrespective of the exact timestamp returned by the LLM, the FFmpeg command automatically subtracts `DEFAULT_PAD_PRE` (e.g., 5 seconds) from the start and adds `DEFAULT_PAD_POST` (e.g., 5 seconds) to the end. This heuristic significantly reduces the rate of "clipped sentences". - -#### 3.4.2 The User Review Workflow (Human-in-the-Loop) -We propose a "Draft-then-Render" workflow that balances automation with control, without requiring a complex GUI application. - -1. **Phase A: Analysis Run (Fast)** - * The system processes the batch. It generates the `Summary.md` and a `manifest.yaml` file for each video. - * It *does not* yet cut the high-res clips (which is the slow part). - * Instead, it generates **Low-Res Previews** or simply lists the timestamps in the Markdown. -2. **Phase B: Review (Optional)** - * The user opens the `Summary.md`. If they notice a highlight titled "Budget Discussion" starts at 00:00:00 (suspicious), they can check the `manifest.yaml` and correct the timestamp. - * *Realistically, users will skip this. The system is designed to default to "Good Enough."* -3. **Phase C: Asset Rendering** - * A second script (or a flag `--render`) reads the (potentially edited) `manifest.yaml` and executes the heavy FFmpeg processing to produce the final `output/clips/` folder. - -This separation allows for rapid iteration on the *text* summary without waiting for hours of video rendering, while keeping the entire interface text-based (Markdown/YAML), which fits the "Notes" paradigm. - -## 4. Bulk Generation Strategy: Operational Reliability -Processing a folder of 50–100 large video files is an engineering challenge as much as an AI challenge. The system must be resilient to network failures, corrupt files, and API hiccups. - -### 4.1 Error Handling and Resilience -* **Corrupt File Detection**: Before any processing, `ffprobe` checks the file container. If the duration is N/A or the bitrate is 0, the file is logged to `corrupt_files.csv` and skipped. This prevents the script from hanging on bad data. -* **API Retry Logic**: Calls to Deepgram and the LLM are wrapped in a **Retry Decorator** (using Python libraries like `tenacity`). We implement an *exponential backoff* strategy: if a 503 Service Unavailable error occurs, the script waits 2 seconds, then 4, then 8, up to a maximum of 5 retries before logging a failure. -* **State Persistence (Resumability)**: The script maintains a `job_status.json` database. If the power fails after video #49, restarting the script will check this registry, see that #1-#49 are "COMPLETED", and immediately resume at #50. This is critical for long-running batch jobs. - -### 4.2 Naming and Organization Best Practices -A consistent naming convention is vital for long-term archivability. - -* **Output Directory Structure**: - ``` - Output/ - ├── 2023-11-05_Q3_All_Hands/ # Folder matches Video Name - │ ├── Summary.md # The Knowledge Artifact - │ ├── manifest.json # Machine-readable metadata - │ ├── assets/ - │ │ ├── Clip_01_Financials_00-15-20.mp4 # Ordered & Descriptive - │ │ ├── Clip_02_Roadmap_01-10-00.mp4 - │ │ └── Screenshot_01_Slide_A.jpg - │ └── logs/ - │ └── processing.log - ``` -* **Clip Naming**: Filenames include the **Sequence Index** (to keep them sorted), a **Sanitized Title** (from the LLM), and the **Timestamp**. This ensures that even if the file is copied out of the folder, its context (what is it? when did it happen?) is preserved in the filename itself. - -### 4.3 The Execution Report -At the conclusion of a batch run, the system generates a **Batch Execution Report** (`Batch_Report.csv` and `.md`). -* **Fields**: Filename, Input Size, Duration, Processing Time, Status (Success/Fail/Warning), Cost Estimate (calculated based on duration). -* **Utility**: This report allows the operator to quickly scan for red flags (e.g., a 4-hour video that processed in 1 minute implies a failure) without opening every individual folder. - -## 5. Conclusion -The "Video-to-Notes" project presents a specific set of constraints—bulk processing, large local files, and long-duration context—that renders off-the-shelf SaaS tools inefficient and expensive. The proposed **Hybrid Architecture** offers a precise, scalable, and cost-effective solution. - -By leveraging **FFmpeg** for local audio extraction, we neutralize the bandwidth penalty of large files. By utilizing **Deepgram** and **Claude 3.5 Sonnet**, we access enterprise-grade intelligence capable of understanding 4-hour narratives without the "context amnesia" of smaller local models. The implementation of a robust **JSON Schema** and **Zero-Shot Prompting** strategy ensures that the output is not just text, but a structured, actionable media package. - -This architecture turns a dormant repository of "dark data" into an accessible, navigable knowledge base, unlocking the value of thousands of hours of video content with minimal human intervention. - -### Table 1: Summary of Strategic Recommendation - -| Feature | SaaS (Cloud Only) | Hybrid (Local + API) | Offline (Local Only) | -| :--- | :--- | :--- | :--- | -| **Data Movement** | **Critical Bottleneck** (Upload GBs) | **Optimized** (Upload MBs of audio) | **Instant** (Zero transfer) | -| **Long Context** | **Poor** (Often capped <3 hrs) | **Excellent** (200k+ tokens) | **Poor** (Hardware limited) | -| **Cost Efficiency** | **Low** (High subscription fees) | **High** (Pay-per-use, low rates) | **Medium** (High CapEx) | -| **Privacy** | **Low** (3rd party storage) | **Medium** (Transient processing) | **High** (Air-gapped) | -| **Implementation** | **Easy** (No code) | **Moderate** (Python script) | **Hard** (Hardware/Driver ops) | -| **Recommendation** | *Reject* | **Adopt** | *Reject* (unless classified) | - - -## Problem 2: **Zero-Shot Prompt to generate 3 LinkedIn Post** - -Design a **single zero-shot prompt** that takes a user’s persona configuration + a topic and generates **3 LinkedIn post drafts** in **3 distinct styles**, each aligned to the user’s voice and constraints. The output must be structured so the app can: show 3 drafts to the user. Assume we are consuming **OpenAI API / Gemini API** with **one prompt call** (no fine-tuning). Your prompt must reliably produce valid, structured output. [READ MORE ABOUT THE PROJECT](./linkedin-automation.md) - -**TASK:** Write a prompt that can work. - -### Your Solution for problem 2: - -**System Prompt Design** - -We will use a structured system prompt that accepts dynamic inputs (Persona + Topic) and enforces a strict JSON output for the application UI. - -**Prompt Template:** - -```text -You are an expert LinkedIn Content Strategist and Ghostwriter. Your goal is to write high-engagement LinkedIn posts that sound authentic to a specific User Persona. - ---- -### 1. INPUT CONTEXT -**USER PERSONA (Voice & Rules):** -{user_persona} -*(System Note: This includes the user's background, preferred tone [e.g., professional vs. casual], formatting style, and strict "Do Nots" [e.g., no emojis, no clickbait].)* - -**TOPIC:** -{user_topic} - -**ADDITIONAL CONTEXT (Optional):** -{user_context_or_goal} - ---- -### 2. THE TASK -Generate **3 distinct LinkedIn post drafts** based on the TOPIC, strictly adhering to the USER PERSONA. Each draft must use a unique structural style to give the user variety: - -* **Style A: The Storyteller (Narrative)** - * Structure: Hook (relatable moment) → Conflict/Challenge → Resolution/Insight → Takeaway. - * Goal: Emotional connection and vulnerability. -* **Style B: The Contrarian / Thought Leader (Opinion)** - * Structure: Punchy Hook (challenge a norm) → Argument/Evidence → "Why most people are wrong" → Conclusion. - * Goal: Spark debate and comments. -* **Style C: The Educator (Actionable)** - * Structure: Promise (Value Proposition) → List/Steps (Bullet points) → Summary/Call to Action. - * Goal: Saves and shares (high utility). - ---- -### 3. CONSTRAINTS & FORMATTING -* **Voice Check**: If the Persona says "No Emojis", do not use emojis. If the Persona says "Short sentences", keep it punchy. -* **Structure**: Use short paragraphs (1-2 lines) for readability (mobile-friendly). -* **Hook**: The first line must be gripping (no "I want to talk about..."). -* **JSON Only**: Output **ONLY** a valid JSON object. Do not include introductory text or markdown fencing. - ---- -### 4. OUTPUT SCHEMA (JSON) -{ - "drafts": [ - { - "style": "Storyteller", - "hook": "The first 1-2 lines of the post...", - "content": "The full post content...", - "hashtags": ["#tag1", "#tag2"] - }, - { - "style": "Contrarian", - "hook": "...", - "content": "...", - "hashtags": [] - }, - { - "style": "Educator", - "hook": "...", - "content": "...", - "hashtags": [] - } - ] -} -``` - -**Why this works:** -1. **Persona Injection**: By passing the `{user_persona}` block, we ensure the LLM "roleplays" the user, preventing generic AI-sounding text. -2. **Structured Variety**: Forcing 3 specific frameworks (Story/Opinion/Action) ensures the drafts are actually different, not just rephrased versions of the same text. -3. **JSON Output**: The strict schema allows the frontend to parse the response instantly and display them as 3 separate cards with "Select" buttons, satisfying the "app" requirement. - -## Problem 3: **Smart DOCX Template → Bulk DOCX/PDF Generator (Proposal + Prompt)** - -Users have many Word documents that act like templates (offer letters, certificates, invoices, contracts). They repeatedly change only a few fields (name, date, amount, address, role, etc.). Doing this manually is slow and error-prone, especially in bulk. [READ MORE ABOUT THE PROJECT](./docs-template-output-generation.md) - -We want a system that: - -1. Converts an uploaded **DOCX** into a reusable **template** by identifying editable fields. -2. Supports **single generation** (form-fill → DOCX/PDF download). -3. Supports **bulk generation** via **Excel/Google Sheet** rows. - -### **Task (No coding)** - -Submit a **proposal** for building this system using GenAI (OpenAI/Gemini) for “template field detection” and “field schema generation”. We want a practical design, not code. - -### Your Solution for problem 3: - -# Proposal: Intelligent Docx Template Engine - -## 1. System Architecture - -The system is designed as a 3-stage pipeline: **Ingestion & Analysis** -> **Template Registry** -> **Production Generation**. - -### Phase 1: Ingestion (AI-Powered Template Discovery) -Instead of forcing users to manually add `{{brackets}}` to Word docs (which is hard for non-tech users), we use a **One-Shot LLM Analysis** step. - -1. **User Upload**: Uploads a standard filled `Sample_Offer_Letter.docx`. -2. **Parsing**: System converts DOCX -> Markdown/Text (using `python-docx` or `pypandoc`) to preserve structure. -3. **AI Analysis (The Brain)**: - * **Input**: The text content of the document. - * **Prompt**: "Identify all dynamic entities in this contract (Names, Dates, Amounts, Addresses). Map them to a standard variable naming convention (e.g., `candidate_name`, `start_date`). Return a JSON map of `Original Text` -> `Variable Key`." -4. **Template Compilation**: The system uses the JSON map to search-and-replace the text in the original DOCX with Jinja2 tags (e.g., replaces "John Doe" with `{{ candidate_name }}`). -5. **Output**: A saved `Master_Template.docx` and a `schema.json` defining the fields. - -### Phase 2: User Verification (Frontend) -The user sees a "Detected Fields" review screen. -* *candidate_name*: "John Doe" (Detected) -* *salary_amount*: "$120,000" (Detected) -* *User Action*: Confirm or Rename fields. - -### Phase 3: Bulk Generation Engine -1. **Input Source**: User uploads an Excel/CSV file where column headers match the `schema.json` keys (e.g., Column A = `candidate_name`). -2. **Processing Loop**: - * Load `Master_Template.docx` using `docxtpl` (Python library). - * For each row in Excel: - * Render context: `{ 'candidate_name': 'Alice Smith', ... }`. - * Save formatted DOCX. - * Convert to PDF (using headless LibreOffice or CloudConvert API). -3. **Delivery**: Zip file download. - -## 2. Technology Stack -* **Template Logic**: `docxtpl` (Python) - Allows Jinja2 syntax inside Word documents. -* **PDF Conversion**: `LibreOffice` (Headless mode) - Free, reliable local conversion. -* **AI Analysis**: `Gemini 1.5 Pro` - chosen for large context window (can read whole contracts) and strong entity extraction capabilities. - -## 3. Why this wins? -* **Zero-Config**: Users upload *existing* used files, not special templates. -* **Scalable**: `docxtpl` is extremely fast (milliseconds per doc). -* **Flexible**: Supports logic (if/else) inside Word docs if advanced users want to edit the Jinja2 tags manually. - -## Problem 4: Architecture Proposal for 5-Min Character Video Series Generator - -We want to build a system that helps a user create a short video series (around **5 minutes per episode**) using predefined characters. The user defines characters (image + personality) and relationships once, then provides a short story/situation for an episode. The system outputs a complete episode package and optionally a final video. [READ MORE ABOUT THE PROJECT](./char-based-video-generation.md) - -### **Task** - -Create a **small, clear architecture proposal** (no code, no prompts) describing how you would design and build this system. - -### Your Solution for problem 4: - -# Architecture: Character-Based Video Series Generator - -## 1. Core Concept: "The Series Bible" (State Management) -To solve the hardest problem in AI video—**Consistency**—we introduce a centralized "Series Bible" database. This is not just metadata; it is a set of fine-tuned adapters and reference tensors that strictly enforce identity. - -## 2. System Architecture - -```mermaid -graph TD - UserInput[User Prompt: 'Episode Idea'] --> ScriptAgent[Script Agent (LLM)] - SeriesBible[(Series Bible DB)] --> ScriptAgent - SeriesBible --> VisGen[Visual Generator] - - ScriptAgent -->|Screenplay JSON| Manager[Production Manager] - - subgraph "Visual Pipeline" - Manager -->|Scene Desc| VisGen - VisGen -->|IP-Adapter + LoRA| ImageGen[Stable Diffusion XL/Flux] - ImageGen -->|Consistent Frames| VideoGen[Img2Video (Kling/SVD)] - end - - subgraph "Audio Pipeline" - Manager -->|Dialogue| TTS[ElevenLabs/OpenAI] - TTS -->|Voice Profiles| AudioFiles - end - - VideoGen --> Assembly[FFmpeg Assembly] - AudioFiles --> Assembly - Assembly --> FinalVideo -``` - -## 3. Component Details - -### A. The "Series Bible" (Consistency Layer) -For every character (e.g., "Detective Mike"), we store: -1. **Reference Images**: 5-10 clear shots (Front, Side, Close). -2. **IP-Adapter Weights**: Pre-computed visual embeddings to inject into the diffusion model. -3. **Voice ID**: A specific cloned voice handle (e.g., ElevenLabs ID). -4. **Personality Prompt**: "Grumpy, cynical, speaks in short sentences." - -### B. The Script Agent (LLM) -* **Role**: Screenwriter. -* **Input**: "Mike investigates a stolen pizza." -* **Output**: A structured scene-by-scene script. - * *Scene 1*: "Mike's Office. Rainy." (Visual Spec) - * *Action*: "Mike looks at empty pizza box." (Animation Spec) - * *Dialogue*: "Mike: Who took the pepperoni?" (Audio Spec) - -### C. The Visual Engine (Flux/SDXL + ControlNet) -* **Problem**: Standard GenAI forgets what Mike looks like in Scene 2. -* **Solution**: - * **Prompt**: "A photo of [Mike], looking angry at a pizza box..." - * **Conditioning**: Apply **IP-Adapter** (InstantID) using the Reference Images from the Bible. This forces the generated face to match Mike exactly, regardless of the prompt. - * **Motion**: Feed the generated frame into an Image-to-Video model (like Runway Gen-3 or Stable Video Diffusion) to generate 4 seconds of movement. - -### D. The Audio Engine -* Generate speech using the specific **Voice ID** from the Bible. -* (Optional) Use **Wav2Lip** or **SadTalker** to sync the video lip movements to the generated audio. - -### E. Assembly (FFmpeg) -* Stitch all generated video clips ("shots"). -* Overlay audio tracks. -* Add background music based on the "Mood" tag in the script. - -## 4. Key Trade-off: Rendering Time vs. Quality -* **Fast Mode**: Uses 2D static images with simple "camera pan" effects (Ken Burns). fast generation (mins). -* **Full Video Mode**: Generates actual AI video for every shot. High compute cost, potential for "warping" artifacts, but premium output. We default to **Fast Mode** for draft, **Full Mode** for final export. diff --git a/Solution_1_Video_Notes.md b/Solution_1_Video_Notes.md index b9d06e27..2934610a 100644 --- a/Solution_1_Video_Notes.md +++ b/Solution_1_Video_Notes.md @@ -68,13 +68,37 @@ Based on the comparative analysis, the **Hybrid Architecture** is selected. ```mermaid graph TD - %% Optimized Compact Flow - Start([Start]) --> Scan[Scan Folder] - Scan --> Extract[FFmpeg: Extract Audio] - Extract -->|Upload| STT[Deepgram API] - STT -->|Transcript| LLM[Claude 3.5 Sonnet] - LLM -->|JSON| Cuts[FFmpeg: Cut Clips] - Cuts --> End([Done]) + subgraph "Phase 1: Ingestion" + Start([Start Batch]) --> Scan[Scan Input Folder] + Scan --> Check{Valid File?} + Check -- No --> LogError[Log to skipped.csv] + Check -- Yes --> FFprobe[Extract Metadata] + end + + subgraph "Phase 2: Audio Extraction" + FFprobe --> Extract[FFmpeg: Extract Opus Audio] + Extract --> AudioFile(output_audio.opus) + end + + subgraph "Phase 3: Transcription" + AudioFile --> Deepgram[Deepgram API] + Deepgram --> Transcript[JSON Transcript + Timestamps] + end + + subgraph "Phase 4: Intelligence" + Transcript --> LLM[Claude 3.5 Sonnet] + LLM --> Analysis[JSON Summary + Highlights] + end + + subgraph "Phase 5 & 6: Production" + Analysis --> Cut[FFmpeg: Cut Clips] + Analysis --> Snap[FFmpeg: Screenshots] + Cut --> Assets[Assets Folder] + Snap --> Assets + Assets --> Assemble[Generate Summary.md] + end + + Assemble --> End([End Job]) ``` **Phase 1: Ingestion and Validation** From 7bf2c09898d6ff2da8f82ca7b2c550251545b5ef Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 23:01:40 +0530 Subject: [PATCH 05/13] updated solution 1 --- Solution_1_Video_Notes.md | 269 ++++++++++++++++----------- Video-to-Notes Solution Proposal.pdf | Bin 0 -> 300234 bytes 2 files changed, 160 insertions(+), 109 deletions(-) create mode 100644 Video-to-Notes Solution Proposal.pdf diff --git a/Solution_1_Video_Notes.md b/Solution_1_Video_Notes.md index 2934610a..e8008314 100644 --- a/Solution_1_Video_Notes.md +++ b/Solution_1_Video_Notes.md @@ -1,70 +1,58 @@ -# Architectural Proposal: Automated Video-to-Notes Platform +# Solution: Proposal for "Video-to-Notes" Platform -## 1. Introduction: The Video Information Bottleneck -The modern digital enterprise and educational landscapes have undergone a seismic shift in information storage, moving from structured text documents to unstructured audio-visual assets. Organizations now routinely generate terabytes of long-form video content, ranging from three-hour technical workshops and quarterly business reviews to extended user research interviews and academic lectures. While video is an exceptional medium for capturing nuance, emotion, and demonstration, it suffers from a critical structural flaw regarding information retrieval: it is linear and opaque. Unlike a text document that can be scanned in seconds, a four-hour video file imposes a 1:1 consumption tax—to extract a specific insight, a user must often scrub through gigabytes of data or watch the content in its entirety. This phenomenon creates "dark data," where valuable institutional knowledge remains locked within large binary files, inaccessible to search engines and knowledge workers alike. +## The Problem -The objective of the "Video-to-Notes" initiative is to dismantle this accessibility barrier through the deployment of an automated, scalable pipeline. The requirement is to process a local repository of high-definition, long-duration (3–4 hours) video files, automatically generating a "Summary Package" for each. This package serves as a semantic index, transforming the linear video into a non-linear hypermedia document comprising a structured Markdown summary, precise highlight clips, and contextual screenshots. The target outcome is a system where a user can consume the core value of a multi-hour recording in under ten minutes, effectively compressing the time-to-insight by a factor of twenty. +We have a local folder of long videos (3–4 hours each, 200MB+). We need an automated pipeline to generate a **Summary Package** per video: +- `Summary.md` — structured notes with key takeaways +- **Highlight clips** — short video segments of key moments +- **Screenshots** — frames from important slides/moments -This report provides an exhaustive technical analysis of three potential architectural pathways to achieve this goal: leveraging existing Online SaaS platforms, constructing a Hybrid Architecture utilizing local processing and Cloud AI APIs, or deploying a Fully Offline Open-Source pipeline. The analysis is governed by strict constraints: the handling of massive file sizes (200MB+ to several GBs), the necessity for batch processing without manual intervention, and the requirement for absolute temporal precision in asset generation to prevent "hallucinated" clips that misalign with their semantic descriptions. +--- -### 1.1 The Physics of Data and Constraint Analysis -The specific constraints of this project—files located locally, large file sizes, and extended durations—dictate the architectural viability of any proposed solution. The fundamental physics of data transfer plays a defining role. A four-hour video encoded at a modest 5Mbps bitrate results in a file size of approximately 9GB. Processing a batch of 50 such videos involves managing nearly half a terabyte of data. +## Approach Comparison -In a traditional cloud-centric workflow, this necessitates the upstream transfer of 500GB of data before any processing can occur. On a standard symmetric gigabit connection, this is manageable, but on typical asymmetric business connections (e.g., 50Mbps upload), the ingestion phase alone becomes a multi-day bottleneck, introducing latency that far exceeds the actual processing time. Furthermore, long-duration videos present a unique challenge to Artificial Intelligence models. A four-hour transcript contains between 30,000 and 45,000 tokens. Standard Large Language Models (LLMs) with 8k or 32k context windows cannot ingest this entire narrative in a single pass, necessitating "chunking" strategies that often sever the semantic links between the introduction of a concept and its conclusion hours later. - -Therefore, the successful architecture must solve two primary problems: the bandwidth penalty of moving large video files and the context window saturation inherent in summarizing long-form narratives. - -## 2. Comparative Architectural Analysis -We evaluated three distinct approaches against the core success criteria: clarity of architecture, handling of bulk constraints, and the precision of the output assets. - -### 2.1 Approach 1: Online/Cloud-Based SaaS Solutions -**Market Segment**: AI Video Repurposing Platforms (e.g., Pictory, Exemplary.ai, ScreenApp) - -The first approach examines the viability of "buying" rather than "building." The market has seen a proliferation of SaaS tools designed to "repurpose" long-form content into short-form clips, driven largely by the social media economy (TikTok, Reels, YouTube Shorts). These platforms typically offer a web-based interface where users upload videos, and the system automatically generates transcripts, summaries, and clips. +### Approach 1: Online/Cloud-Based SaaS (e.g., Pictory, ScreenApp, Exemplary.ai) ```mermaid graph LR - User[User] -->|Upload 5GB| Cloud[SaaS Cloud] - Cloud -->|Process| Output[Summary] + User[User] -->|Upload 5GB+ per video| Cloud[SaaS Platform] + Cloud -->|Black-Box AI| Output[Summary + Clips] + Output -->|Download| User ``` -**Verdict: Rejected.** The friction of uploading large local files and strict duration limits make SaaS solutions operationally unviable. +**How it works:** Upload videos to a third-party platform. The platform transcribes, summarizes, and generates clips automatically. -### 2.2 Approach 2: Hybrid Architecture (Local Processing + Cloud AI) -**Stack**: Local Python Orchestrator, FFmpeg, Deepgram API, Anthropic/OpenAI API +| Factor | Assessment | +|--------|-----------| +| File Size | [NO] Upload bottleneck — uploading 200MB–9GB per video is slow and fragile | +| Duration | [NO] Most platforms cap at 3 hours (ScreenApp Business Plan) — our 3–4hr videos may fail | +| Batch Processing | [NO] No bulk automation — manual upload per file via browser | +| Customization | [NO] Black-box AI optimized for "viral" clips, not technical/informational content | +| Cost | [NO] Subscription-based; 10 × 4hr videos = 2,400 min, exceeds most Pro plan limits | -The Hybrid Architecture represents a strategic decoupling of "Heavy Lifting" (media manipulation) from "Heavy Thinking" (semantic analysis). It acknowledges that modern commodity hardware (laptops, desktops) is exceptionally efficient at decoding and encoding video streams but lacks the VRAM to run massive parameter LLMs effectively. Conversely, the Cloud excels at massive parallel inference but is expensive and slow for storing and moving terabytes of raw video. - -```mermaid -graph LR - A[Local Video] -->|FFmpeg| B[Audio 50MB] - B -->|Upload| C[Cloud STT] - C -->|Transcript| D[Cloud LLM] - D -->|JSON| E[Local FFmpeg] - E -->|Cut| F[Local Assets] -``` +**Verdict: REJECTED** — Upload friction, duration limits, and no batch control make this unworkable. -**Verdict: Recommended.** Optimal balance of speed, cost, and quality. +--- -### 2.3 Approach 3: Fully Offline (Open Source Pipeline) -**Stack**: Faster-Whisper, Llama 3 (70B), Local GPU - -The third approach explores total autonomy: running the transcription and summarization stack entirely on local hardware. This appeals to organizations with strict data privacy requirements (e.g., HIPAA, GDPR, NDA content) where no data can leave the premise. +### Approach 2: Hybrid Architecture — Local Processing + Cloud AI -- RECOMMENDED ```mermaid graph LR - A[Local Video] -->|Whisper| B[Local Transcript] - B -->|Llama 3| C[Local JSON] - C -->|FFmpeg| D[Local Assets] + A[Local Video 2GB+] -->|FFmpeg: Extract Audio| B[Audio File ~60MB] + B -->|Upload only audio| C[Deepgram STT API] + C -->|Transcript + Timestamps| D[Claude 3.5 Sonnet LLM] + D -->|Structured JSON| E[Local FFmpeg] + A -->|Original quality source| E + E --> F[Clips + Screenshots + Summary.md] ``` -**Verdict: Viable only with High-End Hardware.** Recommended only for classified data. - -## 3. Detailed Solution Design: The Hybrid Engine (Recommended) +**How it works:** +1. **Local FFmpeg** extracts only the audio from each video (Opus codec, 64kbps -> ~60MB for 4hrs) +2. **Deepgram API** transcribes the audio with word-level timestamps (~12 sec per hour of audio) +3. **Claude 3.5 Sonnet** (200k token context) reads the full transcript and returns a JSON with summary + highlight timestamps +4. **Local FFmpeg** cuts clips and screenshots from the original high-quality video using those timestamps -Based on the comparative analysis, the **Hybrid Architecture** is selected. - -### 3.1 System Architecture and Data Flow +**Full Pipeline (Detailed):** ```mermaid graph TD @@ -72,99 +60,162 @@ graph TD Start([Start Batch]) --> Scan[Scan Input Folder] Scan --> Check{Valid File?} Check -- No --> LogError[Log to skipped.csv] - Check -- Yes --> FFprobe[Extract Metadata] + Check -- Yes --> FFprobe[Extract Metadata via ffprobe] end subgraph "Phase 2: Audio Extraction" - FFprobe --> Extract[FFmpeg: Extract Opus Audio] - Extract --> AudioFile(output_audio.opus) + FFprobe --> Extract["FFmpeg: Extract Opus Audio (-vn -acodec libopus -b:a 64k)"] + Extract --> AudioFile(output_audio.opus ~60MB) end subgraph "Phase 3: Transcription" - AudioFile --> Deepgram[Deepgram API] - Deepgram --> Transcript[JSON Transcript + Timestamps] + AudioFile --> Deepgram["Deepgram Nova-2 API (diarize + timestamps)"] + Deepgram --> Transcript[Full Transcript + Word Timestamps JSON] end subgraph "Phase 4: Intelligence" - Transcript --> LLM[Claude 3.5 Sonnet] - LLM --> Analysis[JSON Summary + Highlights] + Transcript --> LLM["Claude 3.5 Sonnet (200k context window)"] + LLM --> Analysis[Structured JSON: Summary + Highlight Segments] end - subgraph "Phase 5 & 6: Production" - Analysis --> Cut[FFmpeg: Cut Clips] - Analysis --> Snap[FFmpeg: Screenshots] - Cut --> Assets[Assets Folder] + subgraph "Phase 5 & 6: Asset Production" + Analysis --> Cut["FFmpeg: Cut Clips (-ss start -t duration)"] + Analysis --> Snap["FFmpeg: Screenshots (-vframes 1)"] + Cut --> Assets[/assets/ folder] Snap --> Assets - Assets --> Assemble[Generate Summary.md] + Assets --> Assemble[Generate Summary.md via Jinja2] end - - Assemble --> End([End Job]) + + Assemble --> End([Done) ``` -**Phase 1: Ingestion and Validation** -The script iterates through the target `input/videos/` directory. For each file, it performs a validity check using `ffprobe`. +| Factor | Assessment | +|--------|-----------| +| File Size | [YES] Only ~60MB audio uploaded (97% bandwidth reduction) | +| Duration | [YES] No limit — Claude 3.5 handles 200k tokens (full 4hr transcript) | +| Batch Processing | [YES] Python script with retry logic, state persistence, skips corrupt files | +| Customization | [YES] Full control over prompt — prioritize technical/informational content | +| Cost | ~$1.50 per 4hr video (Deepgram $0.0043/min + Claude API) | -**Phase 2: Bandwidth-Optimized Audio Extraction** -To bypass the 200MB+ upload constraint, the system extracts the audio track locally. -`ffmpeg -i input.mp4 -vn -acodec libopus output.opus` -Result: ~95% size reduction. +**Verdict: RECOMMENDED** — Solves the bandwidth problem (audio extraction) and the context problem (200k token LLM). -**Phase 3: Transcription and Diarization** -Uploaded to **Deepgram API** (`nova-2-general`). Returns word-level timestamps. +--- -**Phase 4: Intelligence (LLM Layer)** -Sent to **Claude 3.5 Sonnet** (200k context). The LLM acts as a Video Editor, selecting timecodes for clips. +### Approach 3: Fully Offline — Open-Source Models (Faster-Whisper + Llama 3) -**Phase 5: Local Asset Production** -Python parses the LLM's JSON and uses **FFmpeg** to cut clips from the *original* local video. +```mermaid +graph LR + A[Local Video] -->|Faster-Whisper on GPU| B[Local Transcript] + B -->|Llama 3 70B| C[Local JSON Summary] + C -->|FFmpeg| D[Clips + Screenshots] +``` -**Phase 6: Package Assembly** -Generates `Summary.md` linking to local clips. +**How it works:** Run everything locally — Faster-Whisper for transcription, Llama 3 70B for summarization, FFmpeg for asset generation. Zero data leaves the machine. -### 3.2 Robust JSON Schema Design +| Factor | Assessment | +|--------|-----------| +| File Size | [YES] No upload needed | +| Duration | [WARN] Llama 3 70B needs 40GB VRAM (dual GPU or A6000 $4,000+) | +| Batch Processing | [WARN] Prone to OOM crashes on long files; requires chunking (lossy summaries) | +| Customization | [YES] Full control | +| Cost | [WARN] High CapEx (hardware); $0 per-run after setup | +| Privacy | [YES] Air-gapped — no data leaves premises | + +**Verdict: CONDITIONAL -- Viable only if data is classified** — Requires enterprise GPU hardware. Smaller models (8B) hallucinate timestamps and lose context on 4hr videos. + +--- + +## Strategic Recommendation Summary + +| Feature | SaaS (Cloud Only) | **Hybrid (Local + API)** | Offline (Local Only) | +|---|---|---|---| +| Data Movement | [NO] Upload GBs | [YES] Upload MBs (audio only) | [YES] Zero transfer | +| Long Context (4hr) | [NO] Often capped <3hrs | [YES] 200k+ tokens | [WARN] Hardware limited | +| Cost Efficiency | [NO] High subscriptions | ~$1.50/video | [WARN] High CapEx | +| Privacy | [NO] 3rd party storage | [WARN] Transient API calls | [YES] Air-gapped | +| Batch Automation | [NO] Manual uploads | [YES] Fully scripted | [WARN] OOM risk | +| **Recommendation** | **Reject** | ** Adopt** | **Reject (unless classified)** | + +--- + +## JSON Schema (LLM Output Contract) + +The LLM must return a strict JSON so FFmpeg commands can be generated reliably: ```json { - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "meta": { "required": ["title", "main_topics"] }, - "summary_content": { "required": ["executive_summary", "key_takeaways"] }, - "segments": { - "type": "array", - "items": { - "properties": { - "timestamp_start": { "pattern": "^\\d{2}:\\d{2}:\\d{2}$" }, - "timestamp_end": { "pattern": "^\\d{2}:\\d{2}:\\d{2}$" }, - "assets_to_generate": { - "properties": { "clip": {"type": "boolean"}, "screenshot": {"type": "boolean"} } - } - } - } + "meta": { + "title": "Q3 All-Hands Meeting", + "main_topics": ["Financials", "Roadmap", "Q&A"] + }, + "summary_content": { + "executive_summary": "200-300 word overview...", + "key_takeaways": ["Insight 1", "Insight 2"], + "action_items": ["Follow up on budget", "Schedule roadmap review"] + }, + "segments": [ + { + "id": "seg_001", + "timestamp_start": "00:15:20", + "timestamp_end": "00:18:45", + "segment_title": "Q3_Financials_Overview", + "description": "CFO presents Q3 revenue breakdown", + "reasoning": "High information density — key financial decision point", + "assets_to_generate": { "clip": true, "screenshot": false } } - } + ] } ``` -### 3.3 Prompt Engineering: The Zero-Shot Strategy +**Key design decisions:** +- `timestamp_start/end` enforced as `HH:MM:SS` regex — FFmpeg rejects any other format +- `reasoning` field forces Chain-of-Thought, reducing hallucinated timestamps +- `assets_to_generate` flags let the LLM decide: not every moment needs a 50MB clip -**System Prompt Specification**: +--- + +## Zero-Shot Prompt (The LLM Instruction) ``` -Role: Senior Technical Archivist. -Input: Long-form video transcript. -Task: Produce a JSON object with summary and highlight segments. -Constraints: -1. Timestamp Veracity: Do not guess timestamps. -2. 10-Second Pad: Add context padding to start/end times. -3. Clip Duration: 30s - 3m. -Output: Valid JSON only. +You are a Senior Technical Archivist. Process the transcript below into a structured JSON knowledge artifact. + +RULES (Anti-Hallucination Protocol): +1. Only use timestamps that exist verbatim in the transcript. Never guess. +2. Add a 10-second pad: subtract 10s from start, add 10s to end of each clip. +3. Clips must be 30 seconds–3 minutes long. +4. Prioritize: technical demos, decisions, debates, conclusions. Skip banter/logistics. +5. Output ONLY valid JSON. No markdown fencing, no preamble. + +PROCESS: +1. Scan the full transcript to map the video structure. +2. Identify 5–10 highlight candidates. +3. Verify timestamps exist in the source text. +4. Output the JSON. + +[TRANSCRIPT BELOW] ``` -### 3.4 Handling Ambiguity and Errors -* **Safety Pad**: Auto-expand LLM timestamps by +/- 5 seconds. -* **Retry Logic**: Exponential backoff for API calls. -* **Resumability**: `job_status.json` tracks progress. +**Why Zero-Shot?** Few-shot examples waste context window tokens. With a 4hr transcript (40k tokens), we need every token for the actual content. Claude 3.5 follows detailed zero-shot instructions reliably. + +--- + +## Bulk Processing & Error Handling + +**Resilience features:** +- `ffprobe` validates each file before processing — corrupt files logged to `skipped.csv`, batch continues +- API calls wrapped in exponential backoff retry (2s 4s 8s, max 5 retries) +- `job_status.json` tracks completed videos — if script crashes at video #49, it resumes at #50 + +**Output structure:** +``` +Output/ + 2024-11-05_Q3_All_Hands/ + Summary.md + manifest.json + assets/ + Clip_01_Financials_00-15-20.mp4 + Clip_02_Roadmap_01-10-00.mp4 + Screenshot_01_Slide_A.jpg +``` -### 4. Conclusion -The **Hybrid Architecture** solves the bandwidth bottleneck via local audio extraction and the intelligence bottleneck via cloud LLMs, providing a scalable, purely usage-based solution for archival. +**Batch Report** generated at end: `Batch_Report.csv` with filename, duration, status, cost estimate per video. diff --git a/Video-to-Notes Solution Proposal.pdf b/Video-to-Notes Solution Proposal.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1809dd3f50b5a3498111b21261d385196662351e GIT binary patch literal 300234 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

^WN)h{-DgJp?#ui^KW*H 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�X`eQB!2;pJC8zICc@;H>B%Z9=!^Z1U==RE1}KOWGb#wn*qWCpsr~Kkve&w9|a+0r%1c z@*W>2CtANKpO^h`*09p`^(mD@)Yj)UB`M7-9(Jl|N=oq#pTR`heaE@C-{q+VTE;)w z@#*E{=tlo?$1YLFH+4zY7`MZQd-b=+Fnv?5&(mvzFSm=H-syLuqnXpdHEs){-xY4T z#+^O#n|JYrBfE@K-wS5Xh_OgB&Ef6xhzTruu-s)|`3r;c_L?re1*2x#zt>mWpdMLk z)vmqHj122{x!08x(>9!{wZ7xs-1a+C446Qf4E=?t4x zAND-HW_YXglMg1xyxCGR#e7cG*30*A*726yD5$l1G~&DJ#M;-OQRRV^=g?!L1x9TL zX;$y@w;7$(-(_0br3s(;D+V|Xotob6#$?;|*Jd1a+7=l0AZOs4g36a!{#z!T{(T`d z*J#$THk)p|T&}UgZ^^!xsTV75R=5S+np*ByGr(icjl{%rw~Zejx{y-YNk9F9T3Dw2 zQkR@yIWPGpLEF{!VsPG#(+MY{8@{94FmzfpXv*v8!U2(LBM-h9H^#D$oQ_AftIdJx z3)!8tzH~Ba8aig?s6rQwm#(&VjaGd-cyH)2#Wr1@cXBaveVOfgKWWcKefTivp(K*%X_&jb?%Jh zAu}JXc~TqZ=*(}~!(r>Fq#pwg9U3?{OMB+-(y88lp9+@jIX_~X<@@7DUhm$z&!_F& zk}Ur7M}i)E_B?i)cbf}|$F9z(X~;^!F=zVhVn$dlUd%b1NJF$eU0Q> zsZUfL5SO?o+-a<_d6%z2g4yq899nuWWnH(c{?|(cUdwNrx0KJ-et!GqOTUPinEZ=V z0*NKe0?wdoqZiSDid!pS{C(gK@y+d0gAFYbR?S9KF5A?0DXr`QG1k zcNw0|>GW{MK#` zJ@I^?TxXuVZD$%^G&J$`>cBzb{l*U-SFM08g4MJML!DYjTH`Go>*^yvw@TT=k5YaN zK_d5W41Vg7ap0CRjHc-V9{QyR6NH#i%ut_?j^Se*EolW4Z@F5>W*%4y`hSD0Y^fSGh!HC2v#o0mxNIBH27YLZ(!pVhLS~t?);o8xh>S=V-u$w!XxlI; zbH!tJ&0-S(wLQO%jD? z34WLY{OB%CB6^`K$xw5t<>j}yO<&+_I#nK~w+LZ)R}t>;#_}+bH>BO;H-HUm=2OG; zQkV5~nm{I-o$rVS%oewE`OL|c1YE#lw$RRk$`dx(a=mQUzYd$g#VX(u_v3dU5I+;? z&v!Mm%nR4)iPfm52eJvU+%O*vKI_kKM+6Lwt&E*C? zl`Z`dAaE+Wm1QFSo7862&s-f*{?I?Od*jQ7Mxz@O9WXy<4$=o`V6>cxZr`ZT%v6UZ zDWm$Glht4)473KyGNt$YUP~T>Pn(tBw7rr)W6B&`=9UHhbsne(`EZrp$~PUP4mg@ORXZJPC^PkOaZ z3Hu1l1LdggYl5g_A=M?aF>-nKhg8oG^B*AgI~YU zZKVd*706!PA)ln0X)UMG@s%Ayxh{?J(d^+W2oAP!)hBQ!_(ReNbLfC^XH=OIQ$egU zhoNf9zIJ>L_G_-s>@abdll zRoTCNwIhVG|7uqD?jJrQ>*Kw?@>&HPlvMM${mAs}b7dY5;>8gXhSryhHD=`E` z?nmhNLE$CKxWv>Po$O>9$J10^%$|ERdzqkJv`6B0F?1htZle2Vc9(|2;^KxD z-o2GOcz>Z?JY?1}AGA4@%7hW~kj-~3SW8+}TwGQ9HTU7+XA0Yfou=xdH5>DUx{sIH z75h8kq}>_N#kS@HCq@U9N*(EW`SZS`3N{`#XQx-RA3kkeSFbDWSevYD6GmLnxEuAK zazvHEjZlOwnAyWK-nv0UR`(91m}M;u3s%pa_m9*e+O^C1dgB=co9k3*+?e6BFdt6; z$nMIe*R!|Silk#l7huKUaM+^J^h4)X!sSzxd&zf46)@&XL2Vn42L78W9QTdi<9jrA ziEa@Q9pmt}szXXBv{P!cNY^|}b#@-ammnK}TA}%*qBcecM+Wve*dC|p5tIcA+0f)9RvhtyHFb$A9zPhJ$g4&$A6e;ocD2W%j#y5 zy;T__et!eplxR%PUQcx6roLz1UMv%bS!m;jhqE~SzL*)GB3`Tm8===}UK`mvjuP3Q zi2Lp~XVmSWx|y_-y0wW(>g76BW0s9>+^BUa7whWUxhd>-2-8{k9XmdaryP=rdtKdP zG{?`*-Ay2OT1Qy+%+Xyo}sSWD%6>LzS}6$x~&~WhYxftlYVPL8!N2ug9+!DD1iu>?KJ z5i7h#&9yXh{x%GnZl?oR1+SwQWYa|zp)YJT^xb(Db@f?Zrw!k1cBCuuCM)^ylNVhF z;-LNFCa(w|TazNV!AH`ijr&W4kQk69j$DpPpFLn{?^OH7y!iv1C5TT1)1ND0=2r0K zGD6I^dqnue;5hy^-}lE%T)q?CM_0bnMINaEsfh#Bb7Jgb$2kcGv0zP1!Hs(Lm|cxM!JdbZB|+jWz1ru(p0jVnT@p8qAP#u zv1Tr$JsHpM>s=Ko`u&k1W)zO;{sOm1<0i(8bW!=z@GyCczcfb3c+Mac;)#EHz0}-s z&EkoDvPxd&`^IihqK~sDUYiYgrulO2d7tf#-WflT&P1V!xk^hS81cqFD;yjPbGmLP zCcU#sCwJMeJjmwoCQ10}!>?uCuOo=_Nf#hPC}4}(>tRC3m}X5ZK$)vQ)ShWC>prDO zJ{oVPyhG<8O9U%y%Tqs*NvtXW+88tBUxuPeb@5}y7NtwsgggR?B2f%0sVxbC+&3j5 zO)^o8h{M(5zKK_`(k{r&TB519$P5Mlqo?0 zpU)nAN9G_#n!;_@f zhSQ>_5kbdjLJ2-i6C2rFkXd^vhwclETzDUu{0mp!vz<|^c4bR!zx@-XKV|EEeeezCBzx-~g$4?f6BhXJc-$ai zjqFHyYZJYh(yIcw@n|v0Za&?kwkfg#$l_u^UBN8GC&wHX8b7Q09>KhuWD7t)5gaBL z;cW{yH#0-ZAWA>2oaX(0l}Ud1ZVI+w69;{EtsjEF>6K#t0C6V<(|CeMPWU$EVA{>E z0~*+j2x~xw-i-E)Hx1F-feE{YrH2pkjCbKf@JWk4M5TvcWD?B-P9Y`$tq>c4oWFI6 zGeoo1XKxp0Ku!X;McgMRVeuz%PKd((^Z8Mx83CFB#z_s1Qwxl94boi=hSMro5VqP@ zz&GE+m&uJ#qzm&?6?`nz?uG{ga*EEt8#Z&4Z?6TBa;XE)q9(_O&2{A#PhfBNF2n3o z`~~HS5Amq!k%AlMQ;t9VlX>Gk50pcq>mxP5*J#M?KCfRG(4;Q5ZXtS+^dr~K4>0Ve z?xCERT;zQGe>M1O5|SM8VZN6KJ|BB28XGSJ)eG#~r^;QyRu!lkELFm#JwB)%9F;GU z#uI(?m~=o#9(IwGkH=++LqQCrF?2Q~n$3(O`S*d`Z@ z%iPaE0kU5h_NUv!ZWh6Rs{IL;mmlZJ^qyc| z(EY@_`>U+40DttSiMj+t!T-cLj$JAH-=ltF`awE=^}%KP6{RT;TL%D80@w$TfdKYK;GZulQCnM6D`Q1~DS$@M*2)Nw z!%E-O5g)*w2sj!7>~Q!TtN=mPSBS428h|eJ3zRXoRsk@W3;B~I|kfCz`*s`zo03a7*0N(pA z+t+_{G5-zd{lg1=<^ETh|EEuYg8wjV&~#q{pRXMM-+fbbHgNhUkdV0WS576s4kMrw z;=)R{qT<5R`gZtq;zodu0=T|^-u@TI{vUow!PwLsFyij`$gPap+XPyn32nPAWD=Ms0u#3SW~I;1y$IX3+*n>+m(%{z2Kl z&@X`eOB)~<17rrc_t+WOwE>;`I{w9{(gW12Y}#LIr2tk~_yUpsDZmVP3xFkQvI7`7 zHf9EGd;qVl$<72Q`Q@b6Wc^2h57-AR!uthg{Zob=(1DYwxRuf2hZQ#bpM(_Z9a`xCtP%zV_I^ zVtkeSr&larr2ytVO%6c2SiZW$_)jeiOn?+XLHR$?{-qlICn`PQ7!!ay*JNh+8ZQ7p z2N+5~$*;8>06k#DXJ-P`^yPX5EL#WAv#|kcV*<$U0E@^1+WzGT{c`cpmVA0*L0j2*sRZPr)69`y;fbnbdFXSB-FnxL~dr3 znNk#V;Bev{`1rJYCk{^jdK^4TBStMQ#NqVC%2<$b`N6#K1R@4}Z??Q}+BX57 zRlnalXZ&(Y0zJ7Wlt?#}pn@B?(5T9b3`ok0#Va#u0g=0F7yQt|Jdiqp#SjEcgrYo< zVI!Gf1T*rYf;|GFNl++6C5-yNFT}KAlt>@(i_4lJcz&L6ZiIvV1Xo8q7E_8~z0y#~ z;tZsVf0;EVmNY~<+&*=J#CmO%oeZMkQ$0J0=`)w9>fr3CREroJ|4d__)Zh8wq2jc) zUodqR%v)$W$}&t+~HSFVTgNS|}R>(!G@&|V|>i?Ya26RFCloX;gc^y|L-a=}bgO_ezxMVCa#W#;y-4j5w3XV&{-|X= zFTuHYx>xG)aIUGLJN?VnqN+9a0Ey-EJNOGI{n-EcF!`EP|Bpw>*W~u^DfDaZ1WfV& z_euAs4FFsGLec+cYNZkT&lAN6U<>=2hym(R)_<+00l4s$Y?W=yzfecO?e`B({@>4p zubJ=v#YzHGR+1I4bjyF=6z3gKUI12--D_g4tiP52wsu0gE~4Zusf$DFfo z?65?iQxh9GqV7<$`xD1PFoQwHHYPqaBr2>Z{Pr&YV{Eyi0PWwX*Nd9`5d8R5R8LJ8 zoL^NyA??()Io6?JMWv@3wN-L2Wvb$uT;11pOU|8L}JHseat@QA-Q++m;Q0 zX~Y427kXUVZo%Tuf!Jy;GBj(x*M8=)1tGTq8CqHA+e3&1kBR}=>I14aFw-9ulsw#D z2O>rQa;e;?cQ}o|)}{lEJq42Mve|E}sAs{10NQW8*0$^@!}EsL+pPdP&%QULT3piY z`eX!ZhXv|AU5u$1^H>q#%K-%+7J5%GH^1zuR^>omR}xwuUM;@>+2>dDJc zxmZiDB0vSA1_L@hNXi%>3{^b_GQtI7tZ^P~JnywogY<*DdtL~usW{z#tpe(%29o2B z>_vfingqfBjn5B{@AvF#7C@aCmJ`np44H|JqB6y)2*4#}MPh)Ba5%KDQ}WbB3+I6k zHfs{8&EDsaFTKv!GDG-420MP{v^zZqMjXAfvG8%bx9-#vokD)%0uA|#{dA{As{+LU zY6+RjyzS?r4Gl&Yv)N_*wM`)?>gx-^4Xsk9^H*ABM6~=DpFX7MFmVCwo&u&{yaV{r zas%d2a>Xibua+Oq>4L2&sNP^eGAlFaa<%t9J1Q_lk{pQpZ!mave6z@Dpzo01sbhJG zyh9d&t2@8X3D5$)cPV`bqewC+hloyE0G%8vgn+Z_4n%3+3e`vjJ?tg9idCMJQ15{+ zkb`ob0-@R_D3kgA1W7ZXP5zLf`5uxmp8}%-WG6rpDVc9|i1Q}#ar*Yd3qp5T^;-3+ z#Vd93hE`|r^!fd5{;k0a7ay6QV5tY3MGi)K3Z!ESA&?$ALXYFjPumVr3&eBVq8X|a zzNx!uTc$JJ^_Jix!i#4OLbhl2in|@mwrBN z3Jj8F3Iwua3I_6h3IQ^Z9ul&T9(KqqxEebdv=@E}c&IqU4oV9I(o>%fUkgqZlo69K zkFYn(jtqYd;t`mUl8_r=60}$H3JE`ttheoo7C$p6!O!m71dxIfaGVf)tOCY&M|z0w zJV(I!ci)8hUVs@Q_4&&OJ@_TO`6Yb$wL(UTITf;%`gjtFo?(HSQ7RO$dwx+;$ne7z z6|h6VT@@oA_JFfV*kdU5X;9FHBAKD=roy;yCG2oM2uEV!!`$RIGsyF$3xHct=m3G$ z=DQ*8#?vmrQ|V)~c3Tt&!KeBqReu}MLmtorEf2h}#_`Z6IScYxf?ieUP2YqTss^SF zU^w!lsRm!@VUO(jULG`F4L70>9NEL!3^brmBGnBU*#l-32v-fx8i-Pg4}>BIl_Up# zUyW>`k0Oi@YxxJ$f&i9Ee>u^k;yS%z)*@R&5n?wV9`)6%ywFEteM4&rL{lG4>TijD zFp!cUkf2_0aCP=RFIFWeJ+S5$H+tZFxe<&OfbZn7(x0mifLQ4Hmh1pr9ssQdr>Xbj zNncyR+Y)2Ev9Hnmcr{<8J^oB-yKIkxzOmtv`fnf=8LRa`VA%j`RbOBkYZc5^MVYH~ z))1`-dtgEfo8k!%?cI)mxfVrD(46KN7wOo6Ifif0iD$=_Hu@-I9`6ma) zEkRPbIvpZV5TdKrIx#jjnL8G)&d z?_jZ#j9G!$Q~6@bMN;E3Y3WIcrN4?y0>0H>Id-?uz*PKBR|%0-PoOlWtS~jP_-3}n z-Tho*k>VdRGQ5!tt}=Buj#aG?VJrdv9Eof^(ug8nQcE1^pjw5!2~W0QwNVSTq0Uv~ zz#7!LjkAFj zjaBq2p-rJC#r+W(q9jS1LaSm49q(`~J&H3+hr*ipTY{PyFwIdn5GlP7 zFtPx{Qa7+n@?f9D>u=-{rq0Y7`o6q3y8VO^tfY*j3W>ZOoPMHkIx3gZ6=RlK?zC`U zp~9V<#FD2~V@jVYss5_ik|#f@{vT=Ko-&0yHt{6@paX7kM0r$c4YM8Wq0ikeIw&LF zyfDD+lAV8_l7C9l)sJxnL5J)bb6nO_`jXBM8`r;0kBT}JcL*FrCAJTEsMq7JTT*Rg zv2WFj#~~He)^MVptU+A%yPFp1jX6bGQU28v(UkyhvE6*)ou|O?-Q4O>k7Rv628Gh% zO|ydpML>oC{G*JeB7DOY5=|(_QO>gA8xlFaUyB`Fd9aI}fA%pV$Gj{0z&ZaGO$ps{ zjYeEx!WHY9^_IJveq6L&dFxcNEUI9G4`^ccD`F5K&8YNzm3hHfD+yL zgJDdAsMK*D=8T{C_`his1%sCd-BXj`f|As2?f_R%ckNR@S3!Vt$0N&BuMKw;vjbW_~bdZ!W1 zodh-N>&TRo0@)wee;w7^jnj#q6$xXwq4?4*PY#87PvT_9Ie19oQWR`GF4D}y-sUE9 z)CrX>aw9DU6l;`D?u1*$kSF`&O+5*Zjk1S@ebNapk%pML_1vbeVz>4C5a9S&xecDew&nX| z;bIDgG=bAvxtv{(FBaDG+GHQS*WX(qoDfcMXLvFR>HNpmEFG%G*K=N%*G?U(Cf^M% zQXD>c9!Fbr)6&p%LdG)r4!vS;Q!-~c0=}^b_nEszNeQ*k@qX^jxr&Hbi^+$A*D7&P zMoE;7C}Sx7q)eccHCEX#gI1agoY-mbqSe$N+SRsNC+LQFw%|?7EtDBj(kW?|Xpwbq zaOk>m9GRr5QuGmU@3@JexIq;xj8`2=bSMxkQ81yXOR_MIR>+%EIE`7n@c`nDnFP(Q z+7q&x=zs0Q%X<^DkN1jU^}?VYdo0%L49$AR6*=%kPrLkM&>3n!z7$L~J;WUged5ob z=#DRP;@^F_sBO0ahM9&ZScUdG&V%Sm^B@Yngbk!?rP+O4;tAzeoHA9`A@!L!#u{_8 z0SebJdpJ;&)TJT_qQo~~;GBvrDlg81;>-gWGp$NNz#D~m;M|5X2gyDjIfbO3fud3> zoGN|?L)@O10$$wST|o;x&63q>75;VEnXc`^Wbqtpkd(ELy{%Gz(Q(O{pzWdB5(_Y| zI>uL0|8mu7jc`oTIN8yrU6*gADrhrXo>hjB4==F-O}5o&g~6k3uiZ*~6TRVF=F$TL zk&qj@*p9i$T0^V^9!({AVzh<>_JP3|TY=b~+)-|q4P7pR_C?)D&lYl%c)2USGTjD? zP*}rY+08K^@u6GaOgFY9+u?xvo}|4GE|*j)K`~i&CWSjnLKm%|Hc(EW#DTs}K1rVH zl;1q$uSb?AiHzoteUq@l!CSGuTZ6ofWQCm9JIIy7NaQno5* zVM1U#Rn4#*b$bg|OO0pNK8fBvr$1)=45I9|*-oupw(n|QI4lNa8~t>WK|{n!dhQg! zIA;MqvRGg1kdj5QYjSJ~On-%c#F=v3-0y_Jyx?p81fl_ud=Tg@ZOv`?DQy{TSWas^ zYdm^87yB3Bplrj^0Rf&Np5J0UqdnmnTMkHKlZ|3vmg)(tzf-gD4QZFBwo zNI$a%E7>n{Tu20`^Vc)REmL9XFG;|HDmSi2Yj+8~-qSFB>fSmE+M7pHQb|@jwU03vh+;jhYEI>)LezC0gLy z;r1N^oqbCqXXsb?$sOPP?rpvyja5fHu{dZlbNAeTA}nXOx&IN^7JBT=_9=`+^YaaZ z24isq11%gCbFf(sV^B4pTfaRfayD*%3mrj$N<&L|ryKftOkuZ~>xt^g61e3OauBHH zFnCw0FwY3#3dr4+9zmWrYLk8a(HY?g7i4Z7%7QhZ_6hz6cn!{rtaG>-$*)F6f6fOd zn);fg%4JXxGJE!PJktu&{PrbQ>o@~SP-eb9H}yFkiP&R4x%r`FJ3iCSxF9Hf%nYV@ zlOd2kt7)+-0vy+EqnU*K>4M|gf*EEh2134 zE2)74CM`k1WtQ`}^K6+PoTHqLLy;k&a!_G1qOO4!JB2(Ow3OnmGfNwx_7t`?!dO8* z=!R!clFQ0=&~@>s5>s3A50}NL9cXqamOVDxHtJgV;Vzhsp(hu7W0UX}g&Q=x8)rZK ztY&xL>a{m%tA!&Hd*fu{FsyC#Ig|Yid;)^^%tm~`In6NOcM<-O_ay|0)&P(e_Q*bb zLoO){07>gNcOtx`FZEFRY|)8XF9lNeOpo^sC1H)Su)#?x zdJhPg=@e?xLoh#kigyV8AxOVUZ)p_cA!wVXPk|a7r7uIWmtC>f8Poptu5ZE!bWO`>1ovAbjOnEWUWNonxE zUHa{}zwdsxpux@_E`$2W#%U@z=*q|Vaah~j!CLT>f~9|qy$ziB><2u_aU-Z-?D+b` zdjC4rv*&YrAVL^s%5hk#sqCXPiWQ#HH?|(>-vL#9i~gaSTc|^RwtY?hhHZZcMG;vU zB?csw9F6F$hnaXN3_V1Ky*LQXGrUgDZ{at9p$B+!MTW)V^NWstUH#C4G7_jUBIv|O zh_X^zS~GSKnL8ApA>}P9QrsmP5RbCzJBtLISbd>`O80I3Ux|Lz(r$PCAGwMeoL@0 zE7YrRUvB>Um5n-U0A!d^y;&!-=nQmyUwla=z6&3_(79%bVY_;+jfLWhJ$8=-CwrV) z@+ZYM`w@k9exq*GtI%MuVXlZcFy%JArYId)ic?`=wtO>K<-vuCOJ;Pr;%Ew!Ser#>(;oGTC2 zr^K1l5hZYo6qeoi`-RBI<_J(+m;YMwmEr!;dv=(LCTgi#yTbG=(TTL@<%i&xc`P#R zJF2%^ASTAvf2!14k|>cgM8@T#!dYK&TDVd9O{I2garw@Txy$WGfnP|bsnZAhVH@{2J* zJygN7J_|j|F`h=W#3WAQF1?S~uNf&Wwv542vHp*viClz%Ray=2&7TF%2D;^u5nypf zyh31pH+gpQOl0^#T!)}O@lJnY(;y+F`v-BxObz&4ZwIwn4W9CSgu35~hKU|dim%_G zDtc9Z8Jsg*rakPtZ1uQI72AidNP%3|L6F+?}L$tZ;Eh5W7bSPOK3u5-P70eIBha90YjIhLIO<^(^JUDlYwwz{_;Qp%QE7#1q@sU@g z+5BpVvkL8BNF>qdnAG54^~S+3iOLYBVM7N-D)2N7L^3|Ov=T(gFqBBMPO*ss5N38BgX#!lD2A(=j%@1A&#FPeJ ztdIITP~C55#4lRi4`U1@zw_c;&(tzUr}063z)OLwZcEEbx-Rp%s9-FeiHUB$w_WK3 z>o73Gy@c0fABBOcDnQ*mmn3b{iifI>>^7}mb*y~Es}VETw2Z*R1T>i*tJ<$(8!N5p z6awU@l@kYRE5}Up4B~tZqH@i(V%@c3HQ*ITWVPq8JcP*Vpl&tBxMXI&Y(}wcX1-)L zykurvYmX#K;yD6kB%wQ9dVqoBj@`$=uN7fQfVH^I$-fr8O2BpOB}l7Dwf_gnOAZ9} zIH;fIid9xta+4U_bfE(`w#f7Zs$=GT1G%i}yu1*qQGxD)$j6I+>&7SXQEVg6&;7A3 zNvjn!Uab#hG3J=p4}|_Q?n%PNz?w70J5T`bu3gq(J?%muf(zbhGCdllKPM0kef)>_ zRrSm2Z-Qe_#FA>I0dJ0jzH8ZPZ*2QPLDF-(>N=!IQ}zL-q2`~-a~hzQ6$w*~jC`b7 zZo{Flz%!ruOk`jm-6}mw{F5HXChA1Mpc#fcAA+bEh8$MWB}->B)yoAYN_$IZ3f0R$ zm(E6v>ZmgA)hA3+lE5_YSAS^8Uv1}EatTi|kxnPX z59N{Gruffk8I@|{rwYiRtv)0-6ap-(2~pFBNGg4&R~)h4Qmvoo{I2;nhZiPg&bf~{ zG}B7?CIJB$isWL(@jKK`N~F_q3NfZc;^=q|Rz`mj#SY@~B1H$by<-DWKhl5*99K9a znkh99z?_g`6faaH*QB30Uxl7Ismzrecu93()G6P1YG5O2hLvwvJO=_22Kf2QgM^CF|*CJEM^Bz(g--4WnM zYu%yVMgsgfbRgr}hT;v#*RSg@A2GF zRVMnAR%gWL+8}(_mMlpCHF@y0dT@kM=+3sUSuE8AQmMLHckhkcQ|;S!{?)`FTsYFt zFoWP7CIvSG2{#7Z59W;DN)#Q}Q-9WYX|#xf2N@k0p&31xCdQlbcW*I11 zkUt&79$M;%c7DCkGx8fx)!{w7cbQMdhsrzX3)!b}ul&0%EUOR)3>F*~+$(Goh7K!b zq`Sx^pTH5DPCUFhv==qB*YK0~E}gUlYOC~mp>ttJA%s*H%R7Z^n(435==PuPi~Ak1 zkCn?NI@XKPQw)X4PU<@vXB<3srs=K;?r z@`~v-;^DI~$Auh60>T^3k`L%3PAc4XWwo%uJd3rW0?#&P<5%TT)zDtr$+z0rcU*|r z$prBsKdTp>8f$c6h(j0hW-)TJ+MfX-*mLFlFVri=kTHucdLLRmy7dfcW2E?uZ3yHc+q9M*YHk9ma{V41Sgi*`zuHq7>c*% z7AuW)u=7~fk?LoermcGYQF29!Zl|5A=ITXoO2TkKlhx8yh2u9(7dnmlwx5^@n{ncD zQ??{Fvn#Ny72|#c8GrC>qj`h0rzdyu)3CX3Z}3^+VEGlG9&jaUz|cl75t(%T_0v`J zMG~=t!zt#zhy5Y_))5Q_Dotzvvm7ZRq?{xmJ3Qk!ztY;;pn89&tGS_Paq+NFd0BOZ zP+nG|wW3TBk=^?}?{kCwL>Z?trXyIU&El~5uo79!BbmYzQ`qA;F)E&bnwo@PpKY}xA(mhwDdu$zl}wGT>&0l& zxE=fPy=Cj}lr91UUU-akBGkpYRM!!@&6lx%7dQ!M%biY%U}pw8rq;isb@g=FUkhgY z7QN$SlO>qq;@?gx?M^;qwZzVA)Uiw9CPnxb|h_W2xhECOcd5 z)r0QzxJ62_>7ul=vut6${~~Z*H8S$z{9=QP)8S{6Fq(oCX%Dk8JbOHu>*sJtLsXO{ z7Cg_fW%V+q7hA&cRf}V~N)W_4oQh@O>ljM6K-yJqP+iza#IagN^RJ0#`BdNSo&|`! z&!31fd0j4>$afL+McgkNYZO`EO&xgBg1E^g?gXU^9|X~+F|gmeY|$;L%XK*qJ!3dC zc@iOY^2l zp+-v!E8eekt^uwMlS!?rJRUV0b65=v6_!bD%#ov%RZB^nsEG-YE@vBUar4*MLaY4c zh5G8^0YxOcLkq@;(ZfWQ7$wzlntH5}2$-_+{rPXwg)CDjk#`VMO3~=RS5AUhU=2zq zZ;y6&=pV^m_hXz6*ZA-K4KCYY7^DeG1M+XnRtc^6GTdk9ZFU#cMO~df-Avqvg3^Np zLQih>jVAW=&CTC@QLV9C>p^3WkvRb$Hmf)YWKp0`gCo}Ejb4uKj`OMEzWYgKKRb#- z$XBOTf^T&aG`7+tYqmS&l6qX%?0eQeW!lodSitApr|t7;I|YU;Zb*?%zIB#{7Z+Hv z#4XNcKKs4n!o@nKC5{85L!T52I^u`Ny)`_V<{6LgrcHl}M7(^|99=4f4jJ8@A9+zn zbp|2)rtq-2BY9XA;Xj}c7mtrr;g{#+!G7;K34MB1?c$1D&CMZ6m?ly~?NEAIC(K2B z?Vt&2j2-u54TN|U<_i_gP1#C{2=lhPPW!}6%x7WCq4KXapGmLvlF|qz+NMufbjqgK zbI8R0xM^Hiu-3)Z@p1m$Wpuw*7zMh&4~muXO$B8iWi-#XTl+>UhpAn6*6SlBB(%%P z$5GO_t0UK-$4zneDIi=5stbbRt@vpif0;Etc)f(;u7|E=?*g`gZA>Gl|=jD(p zsfGq=Cu6Ohubb%TO=Cqxh34wSa@;%T#cs>|qvtVEdI4>9U5RyWg|)%P&4ew6S0N0Z zj;#9>L1y>jFU+$oQ^s|a9E3j>E4jVn>1<{=1fj&OOK)sPQC*cdC8e6mwpCQ)T5^}C zjLfH49+Hc?>_euijmRm^Nofb}Z7b<4#vRHm9T#KRKkcw57MpxUZUv_Ep*nEA| zUDHH1DlWA0tv}6zt=Z037bYV(G(v*gu3hCSlu?-+SqKY z=`Nf;J|-vKtEfC!+;|s08{PCrbL;xN{(OH&Yj}J?n`euBdC!A`%kz1u#MlPg4oe@& zau3^xAj&o>AKE|4^cAo?1-}(-O!aWS722UY^Z|1$8 zJHj8_;Nvf*9iOvS#O@q;Ax9rpIPA?hzB;qkZj5`1!N)D;X=2nML(eh=Qd z=KnF1PHR|XTvqs=+gZ7Od#JONCpWqRr(6Ku^OJ>!s55p|eo?5Q3Ik|x2(e}KP4fjy zgz<%xuqCatB4-9a1|2;VyijaQZipa-E8Ywjmcf2Nx+t{3SlwDBr?AOHFKAM8W~#NM z#a+>|FP__{+E`N5U6$jutoX>itbX3+cAgfi)cM=0%l+e}1x#ye?!a~hA~g-3xfv!c z6`qY1HmzxwJ(OGcF&5=d*zn)N1QkM9mg=j_W4A8_amm4*`l1!c`0mgDe00DW6$sqB6&fXeYwvENcg>U z;4oC8n^{9=C33Yq1(K!0m8>S@w@M2E`h%Ijl-3!tvG!1K$;|m2>E}##(|1^AT`~IK zU<-^|%+}{db^ufB6f?Hq;Zt}hR8WHMlwg2S2~ds`go&QPjQ0{y%7e)b3O>-iVn?qp|2aJA89Z#vqW z+V-0n?wSR=q3kDz2K~Z}Ok~WnANggHy1ws{3fpQ0!g{qXZsMF`k`|ZEHYVj!(r3lKMPFK&aew+7B3<`Fu#xW zLUD`D$x%#}?r`Q=HY9 zO?%5FWssG7Im?Jw)Wrhh45&Cv-XbSzg(Q&5#FioMy=easzDYHuDH#^wX1ND-{J^n> zgmZaz=knnfyApn_Ye!};dEEv3w4D3))l9}P8ya8e^pQq8gT!VyaZwe{AbA3g z0qu1Dc4;%0jdnc@AJYrQ8jHi~(8eeO=6aBBq|Lx-9#|LBIzNX1ydPaHtC_ntJ<=XF zG_4u*3ARnB7vnCBr4Q}rNeh+Dfp6o>H*ij04DVYu^mpeww!tGTOE82!S<(HiVy#NM zpuRX##?YgHVp7ELF*8T<)NU4|>VyIoA&;V{rT5r_mVZf=@l$a@p=?+QECF1R*^UKBE7w@CRhk z{56Vi$s&yLZmb_yU$D~3t;Dj<^xbZ6yj>0O)(>T*YVGqAQ6ADar~Pznp53ltK_}dJ z$Xb6#n{W=Yj7qkRv0+17o%KRRFOk}bk{z9&ApCyflk)FbK5NXWb8=Z`+ zv$$WSv2uLxLR)d;di*qgONz{n5&6miEs4 z?7@Ab`;sz~t*Go}bYmk<2M^al#iPp$6&FwTgoJNVin-l3m@8Y_o*`!Di4EH97PK3* zYwe~WBWUdE5F)SoXxo@AKrp|Yu_SeyzM1PZiJJuG) zxW;(nP|A4FRKRGvqos0SR3539=A6bP-n`Dkwe~&UE`x8BQ470Cac#C_RH|>BhU;gg z9y6cJrGlsCBxA@WX_UTv?&U$#?mg9(5p|3nhh;WXm`Ag8$*Q231=TIJd$XHn(NII! z2Wi88a#pXq!RL|o$SX}U8$q4+0ULPSCnoWS<*&mIi*&D;eV$+%g^oL!-wNykAtoIf zvy7(FMWgdACKH(q9(WmwP1WsQ`r7Mq?$5E!Yc;mo*5{lax|(cDuKfXjI=sC-Ls7M+ zMGLgQ1C0(5C#|m5L%R|edmEcB@9Hyh&(!K_c~XIP=k1XveOncjt`*C54{i&KkoF8t zS5;buHO?#`M6Q&39j&;xG5t$=nuMn6sye~bw1UEFnxYDk34MlsVAb;y!Y@L zrE6M#P30KR`il9v_UWwD-FUprk~sW3ndV_I4naPQ8~lU`dEW+!Q0?PY85`Sfn`x=I z>zzvD4(4~6SXf4i=zV0Ez?M4BjGn^p<0{ksw8d%+x=gxEa+|C>>8cl2voTNh)Gr=! z)KwMr`qqZCB2lLL5d}4_ZZ__1gYrg$Fc7|hFK;3D))j~2e=a9}$b83mmaP^fv78>? zbIcEmNS)KlEl`TqF^X$gLafiAr0h#>%+*U%?4yu`A+prSq#^3LamT%EubqLfDiYdl zSPdObS5a9#bb(KN_0EbC;Gr8W*JNX(Ur}H@%2w6kojgxdRbibZsxa7EHHxpSjc&~l z%MYj2V{sLdH5)C|yCZ$8G2I@j9_YAPK2$}Be(-sH&|Es%gnIMC2FFs8r=lw~Cj1j5 zpUk~9`7r)I+(3otWi1dTwOd71sf`IuQ$bUCYiX3OmrG!asB-&p56N9>11@4j~*+d zqboccF4BwzhtZQ^QG(Ai4QizEn#3LWem~iR1Ks{;^+*wcoJkE5|^r%pe0BwtBs51 zBS+YQ@KEoQqzn2kB8l3?Vk4f1|B0!l!iBEqz_#}9<_Rpl~hWKK*NS+mHM*MA*HlV5Oz>TZ*BNxv}q^2L-}GERoXyd~mv( z{7%hq`d>E-8ARqiM8~i)u|k^a0}M%IxU}$rjqZuq;R3o1aE#HpDlz)LZ3&(xvG_>A_>7BfZ&U{#QPq>Q%+wDLyVq zQ2`S>96kD`3MELA33LAA}X6wBuEkTa(<_F-|u%IVqtMu1lpTbJKTi^!QMOIp5VuaFWihoC@U zdZuQIF3w2Tsgk@m&I6iig_gQH9+Yiv*SqxKm`F4~aC6B=q&|nUu_bA4T>g{vgNSP! z2iv5)q87G&YQuBzg-Aw8{hZOm^Vm1dnqjM&Z83qVINd+Pcj(s2&(F%NfozJ3ahH&& zbDHDs3kG$|FIgagoyB6d`CV@MJ-m0ZL`eH)e1(vBA#+MWym(_2wZ+C9(4JA_%SU#s z^qeCR5)$FmGGq@NPBNynM5%cTHdW5ZqR?5lwuQoZe?j^6{jW^5q;&Fe1w*l<+XSBk z#kTPgl7Ix&o`7(Jw4IE-n9YxmdO?cnes>=ya>3kWO}v2=6%$p3;&s!uj_{qJLQ$-6 zIkXs*u$5D|pcYGOyp+{tz=W_zaBP+UeyyyN8j!M}t4W4LNOPJrCoiF){n=LIyM`4Z zLKm4Qh)&99;EW<&X3443RuGO^xRs(*;lWu7*4_*81i2bf`MVKR*-Tm(JEnv+G94W@ zJbxi)t~DacMcYtXygT=76qdT!RtwWf$qX*|L}5j%bN1Pwfar*BCdKXc9WEI z)`I=a^4`*k1h?)o$+}Aq>$jy3 zWjUr+m#)dFZg)348hRgRpYApFt9z8O7rcABx{$pguVVn2{Ehp_BW8uBpSFzkzz zm?c?=#8h}qba;HPiLyB}5VOf=6z{u30FrlUxaY(|M8wA4}YVr*S$;*`4QkZe- zWNr}|rgdVKkoj$vx?Ah2!7lspjhp(a?#_?;BfZdD4Oh?Q;N4q|_ceFrA7|TlMP%5b zt8wg1Yzlr<7sZH+n$(W{z`|#NK~{VGp28p9t!`esY^Tl`%(AdMw~PdnxweY6B5zZL zU~!?HAfv-)*E&^XGtU!kxojJ*u@LR4N2Cv%e-!MZTJVa~>VEdKja8sE4w*>UK) zG|xhZu##?#_broKqw~nk%r?6u`QbU4p4^}lwHX_`3HjlY_9E4fgr~kFD*lY?5F16W z9vV|c;qwh;V>Vw_IUI}F4w)HvsB;0T^u^d6C2GsO{QGb1lHM2X^9J509JD;=0!?Z= zG!Oh;IaBW65n;~-D$zuh=pK{+r6Y?s+ISA>;xNinz|Vh@w<|^(njg$FN0$%3&$qS} zU6o!2?=>_qBAB_1+SPYR#npG4A~GVh>cZ~Tm&w0OjF`BWeJdWYyW-=}sc0;n#=?ca z-_t1%bF!)JY-$rP;|%dW5^Y!atXR1_U;+<(54Y`om%7kPXsf^S;coqA=B}ODk7?;P zPbwUy30tUZa&X^>ZAg?;3{nu?u3xgcto=E`ZA8LVDOjj$y(U9+BA$(c?Z+3khg=|N zW?lVB-4}IcR|QTCS&-!CTj#JWm~@daRB@r;wD?#5l_c3TDsh~~v2B)Fn9H))cizs1q z-$50P8cQKw*$Gol?RBEJ(6?s6C}T=`@;mUYh#c$y1)Q>Yrxk7KewpRLjLR@`!&4%y zD^+DohsK(^ZVun1(sDaHptgN>Mq7K=y87{f{Z7x(*U{5myKy~R*M!meK<39ZYjl}w z-1i`QY&L2H=$2{e`PTSw+HUHQGydbYg0K=sDwK zm{0W7`dz3pS4QlQEw=is%#{O}5co~ZhNMa5c4j6kXkL@}(Ki{7VT361#tj3N$9AM6 zmTo0nVmuU@Q(OnzDNUIKp#&omH1rQmG?zi0Rc&pPhKsreYq|%>;q5t6P*vBr>S{n? zmyNf+mA0LowiV%tx;Su<&al!wmNM7fLE!3D+$5W;l2S_G^B-R*Es&(a`K}{4V!yz` z*BV&gb2yT&p-E93G3&Va#9=DEdlg3n4IvwXdM@CES?;1QQU`B>GN_grAoF6DxuK}z z{(YRQmx8)Mp&pK&bkZd_kNH@p26iDm_8IqQ`Pd6O;c-)kz^=BEYHb(!!Pv=*&8c?# z&r=(^MAwtI#zKtAGK$mnPWKGbEe#*KZ%RttehJJ|90)r4hFG=57lW(XERN+U=guDD zpGePD%eI^{{HlMHIXf}nS8c6)bF;;^CjQ zzXwzi5Dxj&FE`nbvWXPeKiN}o&%(!aSe z=~rVka0+pB+&h@bW*<~AX1bBv-O6rtCth3~zQ|6Frc94|y<#yx9N>2F6_ox86MD2c zSY8=-+5f^&&y-p`C*b?mr|sS?_FUqwo_+l*M+Nu0=HWSL)n)A~=_9-_X_;3SUW4^i zS{)AP&O&S78D+|9?Yn?;7JYW#Ill<+C_L#I4L*w@!$xW&`r1r{T9wI_%eh2gE#|j8 zm;}$*$y7uGYH!a3yeCgvF^bU?(D<~uM+FQO=kLeI_uM1rOBt&g%SvmOk51;U^;

    9u|A){Rb<=9*3G>rI_?=jQ-(zF?MQcGBL;aSpWJ%t4cG4ab64YR=jvq>c@!S_>#0X?`h=&0Z8uZo^M)kxO?ic z@M15~lbEzlYg+JacYQ@He6w{A&YQ=jP(O-AeuT&+K|DB!FY)HudYSpuV7hKD4993c zd@$pt4*Qn(D7gEh{E#NEc%kk%W#^5S!t!=Px6iH4f3kwc}D&W5V|AG_{+6%!G& ztDCp=2WCqh)`xOa9OPg=xpje2r@7@wi~F&vQya|O2i<3((`i#3E=D8|N8j!V8JdJ1 z(mMzhNd!W`4K|?!6_@s{?Es5+hcvAUEQ#>GIQw2d+GoEsGz00w#tXqG%A|3q<7Ifr zA!#=6`53w%=7ftYx^{XJJ9MY9^wd-vsllLDdfQ$&3lIoWG-ksS{>OK;yp>q1W0lRh7XH=C<@uylTX)>*Wut8I~KWo0UU&3akz>ontx=+d<%cq z-rX|Pj0^;Ue*_v^s3;p6Do-yI(;WTMyumkr@XWca1OO%wCi&aP77P#07<83Xb#%mD zm5Dz#)6(fPzSjiv$)d+RXc=Ga%Qa_;lpWX+O0vYmrLHp2(d5y>edkixE}$adVDKps zp~%0u>8RxVrlI_3O4y;cm~bkDYZveEJwEiqpbkxiw*hpQl>t)Wjyb zDDN@1)!J-T>Sr!`*9SAceExc}oed(T!m{OaA zn4)@KGiJ@G1ss=OKF2kh&IzuezI?zrbErXgM|gDfl_5Usu8ZR;YtF+F3}711LPVT# zCKbQ|cx}F-dIcJ@(zP4ir%fY*8w)L|9)?!Der!iWyD_;swkz!VW=yV3u%r4*)Tq?J z5=Wt%;%V8X{iExbWqqw3Cz{pJYi1=9S#_5 z@^x(NBVUc)=GRtz)3|)Q?P`KpTf5w@UbjYDHO*fAsiEH1h;MgTtK#>7*#AJXS3b;- z$6aGF>2@l+Y7yW&pS8tIwj1x^G?^nH+2HOx#c)|D!42Iwu``@f;*luR&o|MNbS0Gd zPFptlb}X)TW+hIRf7sgmAiU5e=b})CJ9M2Q&POljX+rYc>~ztC)doTF1|D)jc+H5f zMb#6XG?E5Y&O#={))?%CEH!H&Nne`ZlLT6E4tS3A+Gh?$jiQZVNaB$s8Dp>*VCFZa z%@K0=&o}vbD3J0p+Y-i-#3XNydEz&uiX5toJhKpKD42_nX}6fH-EU?Q3SF}dxU)Xbgfw6KvR#RnmlZ7G5qbTFY=NQOO~4m zio4Ozv+1Omc!`#Mo?TQLUCGX)G%$O-WJiZ?G~@N6dlz69s8l|;5Y|{)^Oij9oOfS! z$%TEGlY}^K1sd&5c3=s5dl=lAx4o#U9!mF7Zg2`?TujPYaMRyCPU*MseKesZx{X zT&4{+hyrmW0$i_ ztO;%xlg4>xtzbT=hv)6-+ftvdp98_}==CF?EjQkNeGqz`53o%y5_%TO9eb<(R?u^Z z_wt~ss)!UhmukbaI+%K2p(`A69?X!>h7jMFjHvV1Yr~5C@3Moc;guxM?-$LG`R(li zzJ@pnqn7BI2YKCgOf^gu7@`5V%{k(hzgOE!Ggz$=?v*i#TU=3+;6iWCI>Lzuo$Wx{ z7ed1@0S`X3tRES;p~6>o`*jxi+u| zHQ_(cnm~9(CdxZoz_1${(PHf&_p`v57vo!lq+U1i%2U=nIZ?_u!C3;Zs>3P%DGJO6Ek6&8AIpC4*MilHU zaB?#St!r>WPy*~W@{AqSt(KnvA&JvAqu8ncbw!waEf>BSSitWSh zehWl+T#Y;HBIQT*d%q4Df#1LG(iL;Q@CxgRE9UTb+`%7?$=`qn|K`m6;m-VF=ZOA| zodZO}xY`Vc1VUv%$648d_?6!n8#d4;&|Mq2=3oYbSboEEfPfgF<^4b4IUsP&Z+H#| z7l?tu4T8$>{41H?5SZWa95!HPe#3J(K`@*@@EjnihX<4qmfwj32|OI!AlM5CHuD=y z^9QBF21LEEGP42qv4aZ40t#`0_Wg$E059bLA!2^Rb2vCb7#$#UhLr<|oB;xN{(y9t zK{*2!ix~*;`3=;%Ue#{1>=lp&F**a{$UqI*&3nwsn5a)=Q8`ugw z!0VVv*tvd3_?yPV$_xS=0gwNK$n(4PK^UIjjq?vU53pnXNtc5Y6k_M$0KGsLae_!g zz^(|~`5W=W0!oFO6@*Rt1M^`8fqz)pfO}clIR3%)0V0w9asYqM@Gdq561<*#sL>)b=5-Sf%L2KxWupuh={z?MdbSx=1;g z6udcSR+ixG_bU?E(OC(6PS}o)i0D=3$T^{Fqtgcxcy1v{$0X(TD(IzD)#b z-2Gu&222EMEpFu>B-cu0vVA&{L~TIVvg67!3DN*FS`I@5p66YE_rQEP9(oMKUzee; z%&!qE(+rRKx*bp&g-S2@!xo>&KAfkI;$=xitK#$+D&LV=$UFG}jR6Xtb`LSK$T3em zsFy}IMFe7NtF;-S1FcMq8z{?12%DkI)xQ9C?}skN$coK;ahvo-YwXCH1RaB$*s+)V?8BAl;j zXMwU{IBKT)<|0;b?Qu83e*GH_GTSTldGC`);v*?TC;qmpkGR0g3z+a*w}ZbwUjGM_ z+rOSDf1?TgFOQ-B7$^jK2CDp5pwRDo?XM3?;EnmO2c?|3y@iV6!G?HKBX-p zhGhrnpCJkV&M$u1zsu-OX0L zCJ+{?pl#1$<6>mt`+n|zg)k!z$hsJAh7>wt^Tpt1M*1|aDCdAr z!>8?uYq<#NvG$pOr~2Kj+$dNgN*5;wE04~_(;SU3Km1grz)Y<(KphuKia~arjjhE( z&-=<1ED}7=J6>u&8&e1x4NY2<0M6){VOSiAWjMD-3Kjx9egYDJtziL07H}@`N+ z+v&e~%Qe7H*A|$xiC5maTR)I@AarSf#W^_pf&;aQoO-F}c#PEg(s>wiM>&g+XQ@-hl^DNK$?ffNg={SE(Y*y zg~CiOq;*15N|dvQ2F~r07KZ40i3LvPT*30lgkTz9^1~PAv_%s!79*0`3`Cu^6y@Wc z4hJvqrM@v@Lb>F%{rE*`cqRhdB_H30IpobJW0*%u>8DRkZ_sjpOY~|kZ2MqF;0SFajb{$D7_0I&mjNXH||@ESv?pY=t2X| z9vBYW1lVv9!q*g0eQ$7RNGSVct)-aoD8yuz8T8&QD-6Gks z-d!ry+fK0|pmyS(ldEAzGb6_bVv~fMlA&TOp+tlpM4I}bGOOXC9={Vqg@1&D3U|bX z;@WzTwuTy{$_?G)Ep~4DgbOvf$%EDw$t7~mxdzkClLgrgfi3(Qj6|FS0`7<@DW)$F z4aYGs9zq37R7MIO?gE_&u7s3>q%iF|=p#GaqKI2Sq7^Ihi1);GZ$uT#30eWz6Qs2I z7SsnaTE{3{J*6#((u-nroP=N|YDeUe?_!ZQ2{G6_3R}h^U(gi;uu&*;LU5_=63lSl z6!bAL2hd)qN%(8?XOAjHxs4e?Ewe;%;P&I*m_U$!-sEk?FvT4t@L~>v-0vqEGk(`# z424l`494dOS715F{*@&R{*wt9`R5+`sHsSvoVZ=XXyq{@Y(AD4ngt~ouK78Y>~SSFkeWkv+YjNY~~N7=QRk>8l0Y=8dA&5Xz#mi;tgU@O7WVEi_Tx?4-jmycV= z`Ln*0zlIfM+@u7gXUH0)v#jnd36CHv8;?Y+17Y@C^1()hnC4;RWt0iI`0ZuM+veeo z{gpcfCm&lEuQ0XPlMKhCZBw>_*5Qlq?QHgm0)j2BVFc>}f;?g-Zi;s9+fRK%buk3F zxapZ>gYVu^t==tOkBM;kF}FHf6WmV5C^R|lt=tU(<4w5jRL%eg=Vy(^o5jzX z)zslIjkv+tR{s z&(EXzpCC}rHa5rk+j7E*_clq1Cge`Cv%33o(x(Y=Q7dtqeSVn;nC6<@U-O$4tKcRl zQ%k(}!n1 z~YZXr%HR0k#I zpOti^GgT}k2KX}#He0ms2+q*)P@*9gMas0(b6}zt*#t4v5^Uy*de#|Ve%Ff@3cviW zKeLr3dlquZdY$^yz>g_8_dZ}$R=fqD)>JE%HZ96WNR5$Kv_6h<<#=Zbv2j8U!xsYo$OL|mYqVGPVmxQAS zy9Z5h@|Wbp>oR`q_b!+2=WBkzG#7? zl=(94FXJEmGV?Hb7$+gcB~lPKH@I*5EAoNjYqyMVc>{BE-=tIdAf`}ND1RK*$|T)S zKLgI&tFe_yHfN#9u4n$Mn`vM2zOnXplbOix{15C^aVX8a{rdloi&`VeE*GJs;lhYJ5>#-GqxRsilXH%|+t%II+mHGS*wb z-G75kMkj`n<{!3eW0ef*bK`bG4*d1Lo9D(7ZckXCO``iD24H)6EFu)%mKaTY}CtNbl zv1phU`Xnsh8%bOBf{`eoH1mH;yNS3JkRv)++4aUA!ke2YqJ-ON?a{$W5HM-4I(J?_ zciUdGXg`MX;lb;vL}F_|wK&O!4;8`d8RS3-Gcr8e+!TwxbXrB28;y@Y@{P!LV#JH4 zq;{;(`{5K12bdn3M6KHSl$84sW|DbP`!u@=WB5reVGEug99*$uaFJ{|Fgv(w65I67 zgz3CiVhyFv*dki`$yRxE61(7TF+V4lA?nFC;Vd;?IBW>blx z*Z@S2PKcW}ukbQ9rpglZQpRqh+cfpPXZ$YpbBN%R8PnpZz-d7L;fC9x4wC4n>eDtd zUCV<{*J_^!B;M*L{D8yhXX$tg#qY)WL1!hjmE>ayyB@8lI(qO?Y*#`7!MFG`1;;Sy z_eA~pQ&1lQTm(siuMq`rwLJ`YiS;C!+EtHXCWm)Y73kb{KKVcwN+@cODWUJ|kx6&o zyXf%tngHkk>B5Krx{nupm+I5rv1+(Mqw#>PYN@6)&xooHw>2ANA%BZ^D93UE*`2Ct z`RJJH#X()J;g_l&BODRHbzp9fsvm;lJ&g~&Q0TnlF$T|#qt9GKS{9SssGN_1c<6y9 z#C#QXr6G%6Xa0R#eErzaAX`q{w?Lcp9N^z%^nRWs38PNMVtJl1-OAoQ!Y!sR7>g9* zB9GvR?ez|G00q9Om{FnFzEfs_<+tlpm-k+8;&V1>I^zwJi4Z?`g`PCD5TRhZ#n% z4rt~a)?S#Bzw`DgbDraQqf5&OHoS#C)FW-Lx2%u}3anC~+rcj63$9g62w8;1Gu3|k zVH{JCDO*#9rQH0n%a(8%a)8lO;hj)HYl6^XKJ|<6URlDVra*30iBCsH^8JVg+=+Lk zlTL?%rBRZ>(-_^`bD6{HFZok_M({H!si5#PP+8Z_3~U_ zmXc8g$3ZAL_bmTT2X~0(tPeq2v@lysNw6Vp+d?c_$7<7jos?l@CiJ6DY?hDU$G69x zK6%8Kco@q9p|;I!4#uWj5ueSulP}+W8ND&?kw~cai!2ynLmH_zZaS|gvo()*H!F^* zBRA~`s;L~}(@m+97wQ;<%Oi%!snym`?76Xs*?*DJ(bbr%7s z5Ap}tym8chWJC+^`6J!Bt>zO}5ENxnCzINOe5^+;=FXU-?q6`EkA10L^(HDS|@5SSmZ50#%)~>ww);K;yjq|$7r`5}$!t_T&tsKFj z&9mBtdHLoI&qUiZl`!9`w#syg$E|3rucz+;vy>7H{Ve&-GmTEV99Bo8#V**DdLDwc z4O9B~mcMfM`STOdt!Jf96yjQAHIn%V+`Q)!*p?kE%QBj5u7{>?f;F4z1~q*XCvIO) zKCYkC%0HX;dS|u{(m}Y+PJ8a7jUSEx%;B|pw?+ZxgrtKpFR%@X>W(k3rWC&KdDlD7 zeS}I7e`Tf2R3}k1>zNe);GiPc?v>S(Z1eRcDNdX~pn8Ca3Ya@K(NQ*#OkbgCF|nTH z1nf}Mri1T{UYb){xelB276_woj#b|Nm|PW5`QA)d#L?lUZt(aeW|v_m<|I5!{so#G z?`tw{>3e$?EM&q%yr(BUXB}-f*9^AB+D#+xSB}|~))p^h4ajLuA6s2yxFozYrxT-M zcx_3TxN4RZ)uDnmE~hBQqoEBV6++29oJ!L(7c=l44c(w8lZq_y|93q*=6lOg8E_EUX)ArvS zhs-mJ=J)NKej$H;F^rV9*?;P}wI_RrGjcE`|ANr)UdjTR&lmi{_H`xWGmno zrdkJV!%SrE|@?H||0oeA+^MYi(PLceAQTN=Z(} zO8&LuuC9BC{QOo@)p4y9P*<8Clr`}5H8QMWlgu$D{wJLqXA59u5jr$GwBk{&|48G* zE(c!?J_2jBlRTBFvaa^{fRnq;K-5nDSlwmTCm-GN;T?M>n|1a6>aw&6Ko!7~VpL}W zMyrgPGum2O<6fPPfu#&qbI`23v{+lyY9C+ERM6h(My@`=|Ekf=mi}5#UAp6pspAG) zV;ws{uy2CKwoV%snjd*%<&J`yXir7v zIjTH9LH_5<@XZt*mV>>_=WpTot|o`jz|$49@i=IWd1f^<81>9faAYh(8A)M7qd(Y1 zG3MD4xDjVIU}@Lv&R7pWO?_Yd`gPG%EYsfQ_NT2)67*xf@c{?TEZ|0wFjbvvZU{OZ$`hJkN7t!@f@>SHm z8fe=;e9>ZAn~7IjQLR+`m}*{iTopNLLsv>bAIpk&96N%geUoSsXJMNCy3SW#nXGYKiW;`P2u&bcRzjhQf{wDqr#HMq;}9z(|H+cLU{ zhwpvvSNZTuIn}sz5qyvMC*CJ9HD*o-&Daks>NmIA?d~XPE6(18)l>!zT)cIM^ z_A@QDc;ZP834KR2yskW{pl_ z!%pkrj?$b z)-+XD)DzZj-y5rHXy_>Gh*UKK)Kxg>RcEp5c$EMx{lbwSJX~c&}z8GTtmP zdM70fOnGWGLnB+KDOA6sjo%M}s#Ju}q0(GE#F|zQp5>MGRPYPuEByp)vD6HU3qAca z|4%O5ZFr#qM6Xo~`&1CzvblQ>H|JPPESd6jahc#b9iN+pxr&JFv5@F zyV~QK#Sw(}#p*0UAW^UTeEB8yWHE|zi8e+Vgs}cjXDgenQjBTnaeeCb9GuMh=dmux4)4!4LLT>Rx+{jB7DQj3Pw&FNZ~ zl9xB?%&{|~PdGJQ%1H+^RTnbSl|H^HRS8+%qdy&pFK` zw^wo=^@gVj6O*eM^*MgTvRP!f{=Uh*<_&2zt!hN`p8B%6)I{R)D$+QE-Okbn>8)GE z#N}tz9Zn(2+^aLQ?H7!Ir<}X{)}V#dA^JT1cOELhH*?=s@5A@~@gK8aj8{|P$Fp@m z06*@1dYw&+eEszLt?CL3AfewEC%#5rp;*FY9te=l_5#y<{i;`<63qo)Tb~6Z~OLO z%aKe%DoqW$8m6j~uF^H%aW{t)&wiZnTP-&Iaob5I_#fhddJQslVOGk}h7_VX3Ez4! zatmi^qs1*RDY|_V-OB)*usldJ^J~$nawHm&~Q>Xtwt%pE+@~>Ww3s z6W%=S^n6;g52qZQ{ob$HTr`uCq_W}uiJ+81%#*O6lJNeXkg}ifIA+NQY!Lc|Xx6sv zouI$M)axch+Go$9V_Q}>BYX%|&L*euzR_d;scFYNRTO;&PfrF$q70o|_uFF!tHt%1 z_D)y+s)EA0-rYlLhJzu~Ga5CBYrBW?{py+|mGGbQ^mQ*85DMc}k#X%YX1rhvRA7kaN_-6so4|E2GmTuhTovAwyBPkCf!Je<_Yv?Rhg*(3Cqr!`8NeWXq z@m=iizbExjx+~(@@zL6GKo-mrnhM@Nh{Y7yWD;tR@AiwyPh@>iy_L_@dG+$jGnJ=SeqgTR*x$5t9j+PnEHd+L zw~rYx$kqjHTHns$woBMeq}Us_myD{_Hw)EJDM`8dYeO|}yN7&w``Ft| z<8fDAQ?}uypjgqf*q^}lx|V6ox6vG(n*27pWu2BFQay>eMA8R(K3QBiFA{=T+t$ew z6dyQSq|c}{jjvVrgbzBtu^i+=d}0m&{CxC$0D+bC0cZRCf{va}W}3BvJ9}b%5mBvO zsKBgs#aJChx@KR|4rU4;+bT>j-Ri07o*kVulkuM9bXP!a?8C8OoI+VPeSKqt`MO1u zQE?7=`(lx9L-O3+oDaOXlMK!f{Ky)fNNZA|Pf^xQ%E8tCGvf_onai8TZIUt@{m-xL zpHnk4Q!_Hlc8#rd7=;V30CxNi{P?oOuxaUhm0}v+wWJL5)^gI!;)9Zk=GV~&C00Dj z7c>Kw&NB3wu;oR$O3H#vSjxZ%~8_48>0aA{`eN$#D%$ma;YyAef)Gg5hyFLUD6GRnxmTI z>sLn_tD{dXKWWD8hQ8_85!9GC%>)B(DBY6 zvO{|LN_Rs*BI6e#7DlY~tWBX-T-hSeSk*IO&VLoJAbvadjc>c$@x5y5+O)xY#ygB? zMAtCz?9>!48Jvrf-G>_9#14K&!a+jrzF!l2)3YZ;t@cNVOw9VsvN#w1Oy3aQ4H6jh z6nTa1f1Yj7G8J|7*<-e(IDpb)R()avWzeI@DhKavC=gXBwV}3Vu z`g98aGSK1j=9XU4B%FSWj3S zMc!3NMIR16IJL(QP{xmwEf=ySzZ9)3yX18`JuGbnHNQv>eC=?~FL9b#oV34_K}>2B z=6(M)L{HnvUMRia6wa)n%IM(kX~U~ zq3O<2gp}bGkrc*(5LgYD8RBSA0~#hYfG0y1_D$z?AJy2cl3tt;yX_@rRl3$<)3E-E z(B|k-c}@KsA0KV4&i0{&X4S);hT*E*da2^4y9b1p_iaaD>}8NJ7K)`bVBge zm1|}QP4CC5FS#k81L4#} zDVt~J$cCW&veSq{(u6MV$<QG*n9JFtz97y}b`6{A#gUD%oh z$YfAcyfaa5^bv|=4sh?a#FKA|sY|GzrCmzoTLL_vW&wEarY$q+Ih!B%vkwkXB)wXa zUMKTh_;UITC9X#v^%yQbShP%M7)3?bF4{|s)B#*u=E!6Hlz zPmi+N{?^!Jr1@&P+$iK$Gqdb5?~6b8 zYRZ>nQQ-1vr6?KcPR%J-NPUjul!4aP4C@#Hljhjp_OW45@$z*&fpKGQxBWD7%I3iC zz|H3;dON3K!~8S=`sv+K{V({Qn?uFC?AsRkLvnvH!|16a*d8xmC(o*)85QE`AyI7xIG^faLLad&zLKnag!+&TtxJh6nq#+)eoC8z+^?yQYRx^X{_It+#8)}Rijuz1QFnZ@ zcf-Z+3jD0#5+uyAzzVlZhYXU<2lPCki zf!6%0SHvxEb&WS3xp4eM&nBPH2GUtLL{5<|2f2mv&lS})-YETRiBQ&-5C$$A{)iBr zksJf5;f{vKA^*rJEd)VeXKXv)&7<*?b$MY;R96bAksN0#{(Sg_;Is>_A_~lC`sK*ibC=|3s0Q3EvJu#{w`G80+DUWbTRW;|Y|U!N zBA-DeA8v`o3E)ffRecB-b%A{SIyPh#$EZ-yAiL*lXqORBiJ5;Wz?S{Ey+qa-t!J?C ziT+`M65w;3X(OnY@A{?Tpp^11wdS?Ay~pcR^cj|F2Hf_|sp&fP{b15Zj>k!t04l>R zOaQTXREDFUhi83(J0TtX0Ked z^hk~0p<~x$F^UPj_V1#m?9YBNgd*|A85PNC?c;K)t%Fx%Dl6LwPSKnS^Wz{{IK?}7 zm;9=7lY&tsRbcS>g89-a>B(E{dNi#Owa&_u=s`klhKcE{Rfe{tF!9fdm?1wG=_Ihk z^TIE1;JZWBi&5lQh@Vx$57|z`Lvn)pGUikaOokXf%2Pwo`^gzC-Dn;9 zCh$k?W^l12Wr~`LG;sBR_!Y;vZxpb77xVPVnkJ!jTC$_hPhPR8(~RsrcLX%v@mrQ> z1NJ0u<@0Z8az&$nW#X4sbYT7gl9>^2Bq;E)(MSE{j}mSAYS_$GhWvh+u}pVN>4^FT zf0nq!~ z`8vT{=;@3Plxabe!X=`A5%WdEtD=j8r>d(yJ9@cgf;dY}RA9}WD!Txo%3 zpA0-eDe@mv+P?|wf6D{^i(U}q#rhuz>wlMA<*)vT|8x2NrGotbp{oZ9m^nFta%G?t z8)(%E6f6JH)q@%iwERU^&keMs1*)Stfx>a1A{{852Z^Nrt)U0{sDd_r8_@n1J%bEr z|7hre(Ex2_|EZwteJ{}nQV>Jtu_y5iSNcj%T9Y{s`J5wO3 zH7ig|4zz*=#_>lf|6Be3Po+Fi{rwN6{GTgWSwKpAkoD|;SIUE80?rcnSL|#+?fai= z*g1i5|KAn!z$)P40;%XhwzKR&yVu_yuzxi2zg6@=t65;#fz`?eJP5Lt1(uDO1tg&d z%He+(;kRb|cZl`3`kWn@hd+w;-&OKQ%l=!84w_5A&I(M8g%wyIx~#w;P}B;thh^jZ ztBf2ZLjMnBFz?q= zpQ9xSoqE@!Zz)Bcz5Fir=6l0&-K#(oA_BhV(H#uZMQ&sp3NO@oKWRW|MeCrQ>-=2q zULiHE>}%7gi*9dl`|;rYjzQA3Ca(VHr_gpEwN;x$w_Ef3y~>HIPw&i!-@7XS4kbIE zj;msel5gf>C#q&1JRXZ%s(|LOTc0VgmDt7#S{a@ke*(N5%!VA5nXB5%!v@e*P^`SR&ipm~GdlG#MEqAUeh2TPcJjkqL) z<0DX-5!NPz*EvKA86v;@1pVdfaAd}3*lc;^B?pQj+KF-SLg6358^{q}XsqvQegwyV z99BUUB?ACg-ITJtp-~Bis{6Royy}qeFlW`2)AMP0bE5L4?4~OCgQ|lmvX{E_B?u4p zD=B7q>uC-foSuge7Jb*VxYsih&7p9>L(x;Vp{(#2$&Hq0Q@)J(E9C;P3eZ!FAciR`rRX zeUm8YiY|sXW|`A6$$hf3o0Um-?&b+rBN|@r?<4g8Fiq%RBhue=+5ht>_MghKfw%47 zW!a#<`(K9HzX-EVoPOIc~_Bz*u_1VzB73CJ4fha=u2 zelS0IMAw%lN{-_jK$nTm@U_$t6$7b>F*;kOrX)F6@2P zlz3V4kpzhZ4~%}BYSnEfU=b1(+=>lM@>|XKB!}$guUiz%JJ4P3uG&_^3lGH=>yU*+ z!f`b<0Ce5?bA0d`IN{}*VK#fhi{t|@5)+Cu2S73lCDUDM8pLH5hES6-|URAZPQQTgNM{#56Mn!3g2hJ$lcZBgv2sbl@kt1CCQ0M=)ZciA`d)wT{#W zrAK0=YJ!nS@xB?zJ`ECa>_5*k0Q+L|RyLA%9HLnhS za@lt^k9i8kl%gLp_i?!IlT<{Ap^rM7PjHBQYSh{7s=C0;khx3=4{ArO*{IeEskr#j z5_<%u_vpowUq8HebIfD5AD}+E67=&^^xbL4Zz-vQ)}?cWQZM&>XS6M(WjJ-wk|TI~ zaj*PoKcj~uTq9ifw+WAqS-yFC=4F{inWMsc>|r6})z+Pr?K|Y!o^~!R?9EtC4y58A zU7>my!r~xrY{T?cplh;4`$aD2_7$EnzkM}JduLQ)xE2`>Jx0-nQjYnBJ+5{sm?UZX z(Z9Cs`koo{JyL*vRchuPud~?96mMqYl|!_x%x{iUR$pU}+Wclcz_i;_=1%fH;}%{U zhAOs2L6?G{N{}W(Z;zsUJ(h62e=I|@Q&T=#tSU#I`97t@U5!011%+rHo!f%fDm@p3 zh5bBe?yGe2yNcDmNC+11uzk;8b2|`pn=rd_E|@|rTL0>8)8h>(J73)5=%K9o9I1qH zQ`>V>m1V?ED#VYeG3tbOY*S0T0IOC#<+6TUf@b*(znQ*H-DcMIV0z6iTxLk!BCn#T z)i?Z&e6))Ju4Km7I6~Y_p}I=w=&sxeQ@l4+#aBJV2W5i^}QpNN$UKXE@(@9Wts#9U!j+@L!?bNU6#MA zN6z7n)^LFf?~r`yMYZMYGd$1GrzP+j2C9}>sP@lV0)mhT%;=5xYQjI&? zLuj|kiI4-jE#-c+hwVgs4+wcC5(kr31a|l6W1@BWhq}wBrM(Dd+E&c>A1UFJKTpee zrG{KDIyw3V93@?zvyshwtEn@GZ3t6TEuEA0HyG5S>^Y>S!*hG5L6V`wvqZNP-jrQ~ z5rbB9xjxFWQa92wxuqLFP>hMKf7tm={NkOB*h{90WgNvnk1p5ZPsy1DRN#v?wO*>c z)F7x53{46w$}CDthuG|;@b+{gH)^uVGQOmG72y1?_@>#Dpg-kJk$Z^=zo3VvpvZO3*-AXs0RoQ7of)gpxvPJ!}+0 zx|1nwWw|}<`L7-Qwj`Wxckt#>7Kb;{OOb8g>pA%H%(FB?*$boiZxd;|`LOiubPFQ# zJ)Q3ySNA8I@yyhW?S0R3DXzmW{LPRb)t$ER!<7lNFIEcWu$yL>@&fDU?^de3KeF*h zJr4f5$n$o`bB&svY2TdK<8|*xZZZv=NuZFA8mMQDKye&-fA*BraQ@k;^FA!|hxIzn zUEgGXV&&*|ARdFK4y|H5{0S>Q@NK*{nvc+L2X^|cQ}zbtg#_kjUAb?4RIK4d=W=7~!`C*6eKIZjTq*u45-we&#Wec6D+fTT={K8En zB|l0ApH`tU*HPeRW0g%#Nlw{?tqSryy?w>JdiK+F!JBtaxe{c=$En8DhO z#m0T(*2RPf?`SdcV3fPHyV-}Z_XkAwn{c#LzLq!g^mL&s)i@PzaLr`$I|XK{DO_Z% z&*(%Ex9{surbbZ;Cdt|Np4idREtKr_X0pZBifUUpgdF&k{e))(Qype8-6WdJN|lP% z-qF7A;m+%sohO_*CAtba0*K7XfSQ)kygj6;-L{+2l2T2?oH~Xx2c)cSe`BN2tg3q# z;Y||J<35-Ffz2a%T`Q(^kEWIk&*J)S9yu?zf$ubDe)6m^e*e;=RTJ`J{)WqmkW>b~ ztIQOdTDBF;8eYj=?P6=qxzPhXS~rh&JP*;gY@J<`C_1>+wnJ(r`IV!Vk79-)R>%B0 zTYy53*07xhJJ0iV^Q~)A=p@qVrd`4_+k(<`J>C%k-Vty0bEgei332D#-jZq)<;&GZ zRQCw3vuG~ei^^Y0PNa0*RKG92tR0Nz7o(h3E%*3TrF0|kj8ddZ>ef!3rD1_n>|d5P zvf@G(*xf~-WHsCM zvgl}d;*$`8Pxc`cA#4UECzMd4nkw=-G6{CN`t(bNty3-Dx{n@)jJy?6u10YbDcyV# zSlj<@%kS2Uo!q1PyNJ~mfBI}3ntY*FN_IFq?a)DfO-9osX5A#_vQ%c* z=AQVA$vj!Ya`Dtr z5@V&jpGqi20){W=n=05EloX|hl?cVCp8x(mJkRU-bNy?V^)$;(G|P4B_BWoK&>xdN zX!z>DNl8BrH|_Fg(MfiTRm{7iiw$V^j_;BY@UXwe9CwA8PQp2hSmIzYK9cckK~#$} zsYn&Y>SipNB$0x{NoHgGnep{=3HJnq^XN*2%8L6PEp-^|L=+RX#s_G4Md<(6tpE{a+%R2Ur`Z!oK7M*xYGUnssZ)8Xml1q%d^yEXBLy z&Vp~E^uiRHqbfTJDCY`|9$oNwsj1l0qu>&ndPQ+oLc~zS*ON*_!>H5mLSkU8`BG!X z>GPlz+H={hKIZb!@DZiF^X$s=`nvO|v=OBky9Sz*bJB*-Elrg#*m8`A?-=iBiv1E2 z4j%ojQ_AC0&TD*r?MsOE1>3#jdlWY7wU-)0eKgW4D&!=u2C7bk^0+nJ_!iON_Df(~ z;t9iSWB#R_W*W9PK3wDGAH0N~9X&TA$tb=XMgx+v@T!QTNa19rGw{4t!ZqvQMMg z%H(#5c15W{j?vBUCx(BFrWBX7C4CK!Ffa-ini!Ay{m17EcgRh(YJUH1l=^p*t0%~R zxO-TYl+gC+&<#3`)SmnJh2$rAqPlm5)#py#(c5)4dz?F&)#$E7Diq1U-&Ic ze#!axn3RdJaA|d*43^}J#YI@WwK{GT2!L2{18RKa|(w+ir9SWObsTFRMDf7 zy(Ddg+{{6T_u96m+9?B}7vtRSWOb-mGJG#Ocj#EmgjemoQLSES%xK4{dt!EWJ4Va= z&n9M$Y`OgUY{Jx5-8Q@12mPu=F9VwvQyS<#MV~BIa*6AW*}$}Cy~8eoRz!kuo8F+l z^r!K6FP5vhvR82RS}tkcVRD+iM$N)M{13ERl%L=JB0s$~!cpK*z8>ivx-KIko+9z% z$PJ}mugovp@XlM`OwGM%_<-;$B+T%^OG)M0&TBJPReD8l=V+2|8-023&~*Oh6!+xK zS>}+z#L3QYxw?im0hwPZe+>79e{ubIrp}!AMM~`#-H&l!ViS!oymc&Ztnm(g%_k@) zt5GjUR4cT~sJ991=RbHd#V28IpHJv{1)t&u;TswsM`{N;=JQwZO=^63gir0?{hN#r z&lmIlD&j9S+1$ANUA%m)GT4~a{UOaOWzvlMmE{7B73P9jW~9Z+1kdZqJq28HW`?q~B{n#&(4&%2uD79Jtwa(&APF$$B{XV+Y&nhoJsvQkP! z^)-my%%O2P8u|U^`qag-t()sKH18s>rOkEU`(AbDNB>PkZhP99hb*%vJxS64=Ml`O_e0p{?x=KZn3dZeosC z_1VcOHCv^)w|m0pl?ED>{dH9Qqo$qizD#Ee--ENY)nxXMvb9w{E_%w{=;G__1*3DX z_wh7_c;%gRGclic)#>fAO3M`Yv6HCOn{|yTo|Fw%RPLAq&<|ewSPoDX>U$;=^Dytr zw6#;7w6Ugz=Zi&U55Fs_%~IeDiPb;BWa2= zka~9aQ~7G&Qn~}%U0zgyMZfni^U*<*I)NasDuE5VaX;(b{##M?Vr&ePm%mSw|4*k+ z71_*x>5^uvgu*Y@RW1$*lang-<=%_19R?Azv@ zDRmY5MVv&OJddYgf74Fse*c-P(to|}h`r-aU7}Z~Q^ZzUMn*<| zrkSF>DBt4#)eP&s8-YQ`j!N}N=j@!Ol%?;dbD(d^vq?La!K5GaQ)-VtZkhIKHh(D{ zT8^%tZsonMmdlChhqQe(G-nMqrZytVme$vo#EWvdjG2bj9CIJ)@2mG(KGTw(_0lKI zEWxSco4(cF?O3n(VsBog2QX47pI;1c+sZ=MM7eOraOj;by3M!sZAQR(r=saD>Q>rE z*7EpdenxsuEy2|NMC=iEm!+(mN(>5TRoUA{Il_caJ&bU*ak2?Zx)Dq*>PyMED~qwU zuVt5v+-}L<1*~gj^-yG3+zoYR!7*o5q2wFNwE3e4M;V_TYYjf*d!VYa=47PGA-O2O z$5kmF``%D4EeN0TsGfMoYO2JwDktwzGm*3-e3Sk#^D5V?w)Q|3!2_f2ivq!$(Y}k- z)&sof#wuoa@U64(>{-3VBNr@u&q*xtkcXI$gIMCOBXYrgnvP=6_w+2V734Fm@3Bm3 z3sfTbICc$KPV&yS#orQZsGibPA*>!Qpm{?xKKAIj#U$;D&32p7Y|mD>qNe?}vgqJg zzy3hXX6&IA$0N56V@CUDBWPEdsy$iOsY$c#fyzM+)%NT=(s=zdk(*Beis zTCwj!?H^lUr_4Jd7d=nG8@qEs{OY8OFSCj#-8y4C1#kS>v4n0F>9a=_DXS=B_pkY% z>f+SD(z-y!Y`1rPC&6a#*%oV5>gJUs_P)TQjNe8X>Q79b=ysa8#V$1ZL%j9-LO^Wi z_XW9FC4qH%d(YkL^tab&*69hh!t1P46w)e;;15qBxe#h`#|gXqmK6QA<_?EgM-2~| z&Pt(7!9~N^(-CO8+Y6{W_S|x@UcpYev6n-yvG+H(9@4d$m}J$pv7R#4b+Deo>pEIb z`M&9G?&R6k-^sj+o3W8t=k!L$@wCYYOX~O0zdP1z6XC(;h}n8OduWyA3+o#1n>PCQ zR&Sor+bO!)Q&sJ#s|huYlpEb?Xor`(vW|-2c`Vp#OXYE7rh2#Ej^)vvhdOU8>`0$H zW}HCf$yVB>vL;#D)n1?Vxl3r*k?4TYK>4dbU61f~?J`aftGx2LE5)>X)&8Kw7>FGG zsJiU8FJ@FxUTRUs@5<-)8q?lYTaNU~%YO7aqgL_>RAW{fJPcJ$emfazn*10ODi1Fm z;5{9%h~c#lSlq|!6i|6;(qxI^b?D1QVepS7!hI@9ioo5+s}xM53deXU7HMCH8u?xQ ztj==tbYm6g(@{6Wsf(+7Mkc>5c$cyG@mSg92t~4ueJpC#0RT3?-Bz|a_Co13{fnYj zr*qy(1ry%kRykajWY=lk?f0zHex0OS<-psEybhPzTWRUXRyum5%4qV3e#cf+kPWW1 zeZ9!>{ODC&89kqkRB3yJY1gMp9wp<51pW3;l`4}7RX2yv;EN+ZeoNKC)-xV`d7zA$Lp z{o{)J;l!awn<~eScm-z%t}&1{vx0;Q`CPzTz5P9N)|UK*K_XtiOoF=SsML-f8I>sH zVo(wr;aKK zb>z=>jBR7?ZP)I8dbCnE@C$Xsgjar1(avjhma-Q4RST7*y~NR5y)+}ne>}CjP}zJ*$@f$o`r5A(X( zGDJV@_{7-$$=3cms>c7jteISnH0luQ5nmql5C=C_%*$q_wrcbJvY>`~LM#vKkrRXg zl&F`%%Hz@ZYp-XeUYT8e{cO4R_$+VD!>^-y7o0C}tY%J`_kI}pmUNG5tbh2@=z`K} z7H0=lj}`A7|A*tU5sYDGZAJCyy8>6cdvI;(_2qU}WsIk6hQ069aw{2^O7OZ9_H0-N zeAQtrah<)~fl4 zCG{9pB$$tP`x5YYH>;(`vfq5BrZf_gFqn5;OFz64#u=WUylx(5Uw55{xBAqihiAlo zqP!2=E}fE|SLgEO6Qu7P|McPI=>wGISG8?9?Ft+$>e-_`6r=e!YW64@Tc4|Xeu-l2 zLWxm*#>sksz4 z06+2ga;FQ+;{=z?j{IkY2l-g(FG{|5C%rt2pK{m^%rwSsxLGPSDB%V@8ZA97%2FlV zN~IKTyUBIEPHMA!oYS+EZpa&W@3zXVXX zckAe_M>3+@uR~Ezn-LAc=MgPIBMf_$_=r*fj@72)Mzj+>wdz1Qtrajmjt~_YsF8x zd8{wh&IpN+Vvc7jj`~)6?pX_)siRsI=yH`&upYfl>t1Hs>5}dQ=y}C|_n$BGb2jZ2ei~L(g_hB)QyV{9 z5^K)BoqzDuEzPz$TJ@7*WkOadNsFWpIcHuSU90QTEeNO`V3(2`8DiV7^YlgKnT(S{ zjk1}p&rZ6Yy=iBmBYi(D!QhU#q37cM6B0hpN*WxEEMrRUz7ZR|pU~p8biz83$GXen zXS%Rlh;X@tubA2K!5zk>oaSCD$p!oui+bcX=-Q54|F+~AbVA2m(L1tBEmV!D({0k= zBkJrd{~*yhT)s(lHTGSxDKY%66V2EH-y0<#?)I!nt`naFecnGz>+heFMLls8XLu`T zyOCey(tpAIO~bkOdiGz<2mKsgzK-1(UYg!$v8>67@xS_3)~VO>!bEx5MfX#~qbH7^ z_iFli^xV|piN$ecZg3lBo{^r(%w)HaTyb+>S62Z`ypRF#_bT;e*-V87ACUjeh0U~( zjrzFF4b%FSUGu6>Uec5?no4?Pw&a~|HMTh+d*!gG!_1mjG|{~a_oRq(FpfoKFs|hAc;=)op`>R{@WNgV65r$x zQ-yIYld~_+R2Wqs0BPurb3+X7*Ru&#=_QyPNV)9B zTC&r&wj_$-u%~)hWB#oh_~tN<-s%Of>wmotDLyjZ)4V<5q~DCy09oShj(TqLS=prEJdJg9X!T`aE2U6PjN#B=(Z-8CmO z*CeTJH3QGcg7^F$rra+EvJJU)m|v?8@;H7I*9B5;_bf+*4LpGLA$!Fjb!XMDNKf(V zJB7?vqE(=$53LXA)lAIxCTX%g5Y3h zSuwG3qb9q7?=i0q2VDvDbR3^-E0Oj3F3e#Z*u@kEG1R{Bh#9}5GU>4P*C-4_ng(PDBx-=e!S z?m1>rTYFTBR$Yudkfk75)lqZcsZ?9dAqv)*aPyFbQQ77nwTHC!F(hMggChB_L=M#G z6quSM7L-z7TRpLQaP^|^m~?!QFFJaa{p|>EyHqWe^XuWQ^c3|oJZC@qZ#*BnxBRaC z#kA9@w8Ll0YnV3z^OtLxx@gMdD;)66LrbD9E^|FEaR-K<(A_>+%A@sCmpdu#$aTka z+$NW2(i6TaKKGlQ3)e7SP#E%F-2GB7=-p2_w;&^4UUc4aZr|m=4KH2Ksfrw9e6Pp@ z2fW$Vs^r(~w-zfdwu{%qjPFt?QS*15vARlqayU{-R4^-2_q$i7!>;4l8wZoxWAAur zo$CGdt@0~6Ggk0cQL2`D(m@B_BrR9flPD`Ek`-3U{`u0?`9orB&aH!2 zbeq|9>!J%LZp&OVW*!@7Di1Fhz8Em-s-RPVi{a$*3dlTL(708r4@!X#+={#3d9qbO zvirhxQ{fs@@VkXd?$Y9L9xI>pUoTt6E*T~;Ih%@A4tiZVzW+OOa7xyXi#+CDbzjRG zh+|@rnqK!`OsU?Or>S^vqFN?ETL=;$_wLUfLD0 ztL9atpNUv=Ov;N|AFmb}Te_Do)5aTH77!x9C;93viw zUlPfw*8hdb@j(bF(%5RDGA%T8@j;&CN;m^N&!g+@0-jHg~Jqm)8pULAF9Ovym7PX(M%ub;82w5ee=zwdxJFrv~&Bt^?Gs5?y(cT zBVp%7y-^Xp=}xnS9Cx^!uDjJuL}*uQHk$+$zH^&uy0iY7&%93k)q#+*<|oCEmy}N! z_$8IC`5lY;oXh^stA+jRr+Z~g&bYy6&X0$))lbRCMGAkCm|#|K8yWIkBpm#im9`=E zpwrsTn8m%W&v92xhwd|_Z@HXVpY~IC3LJ=45oXu8cvR3JG5+MO*ZXWO1Y9M<&ON=A z#qeJH9;e=|3?J$bna^*^TZ%@8#%@?7UzbZbXl;YSh z=&-D49^8w077KS-2i+y&gv0h505%lx4Zd6M7!;B7MVL{6Z(Wb538^ziI zUnc2G7d=Y->g~>(rfghYl?HKQJC87CM#gY~u*lGY9=qWgrsgBslTIFr7cDl_itW-g zS(Y>2|5!eAZ!yjHYoio{pgD)9Z&#r&vxVYTL9A8LOYe2riqg~(p5k%;4!YPAO+ir) z-Ug?23iA%6Yr>3u5Z{TFYkI5XZl^q0m=_f#hBX(M$1)|(hFL=j3$ZGEz-$?Chx>?ZvTo}J-J7cF(GumQu zcK*TZ$0AynsB&LbiJque$&b9H%BT_bVI-YcU1IEF`TmGlJm(>?>vly4L(K6}&m?it zcarjtY>u8iV=@}y`*kF~V(?x7!ACEy%B*8bnU7KFfKeBkh!_td-2 zVRzT$hRt)I(+gS4Pf_n*m5Lj9s5kN9k(|2xxWe_iWy|!&Q~3d(FWSGv;|2UJ;2i4qT z-+o`4+UDN8>f_}EB62T zRI!`?IQv>ZC4Td&6_e)k`z=8qO%k>r?P{XmxK+V6rhP%F8GUFWVLAV7u+IHuuTYf2 z_Rh}d$ECK!W;&R8`+{E9;JQs_J_NZ~Ni$pfXVP6g(ihXbN4mA`DHE;jB;V+xZezCV zU8t?VF}{x?WqYK@`kvC!zRSQIe#bU#p(ncK89b8v0CSj)L4EhOmi1JStCgUT;1==l zRn~e6n#0FY9IcOBeUi$hvCWjK7KbJ$zPs%)-=Yo^t#^<+Oh9Grkm+R``=q>lCZyd_ zE~xQNXz@QN${Zte_#YALpUYoo?UHMh2Ivd9bFcm4oEdJwMN_{n+f! zVbl4a|L|J*NLZk!O(VaxC$VorJ)(7FSBC4y50tCoE%fVZ_Z##tskJe21)R3p+HI52 zoO&^;f&a+BoO}=$Py8(FZ+aqYc6)Bvo3rgfvrS(xOs(1O(%KtaS=S=+`r?CNNqUdg z^GW4)hr7Q{f4})C4li)`A6n(l?O>2+8+&q5DX^rUYUxOKcKBYR#bom5hi_WuDIYFc zIh4|LWY8$c`VhDM?5~#o)9VuT6^7;**YkO6-*Qb127h*O(WL%E#q4v|*(>y9wk&;6 zd-USPa@|0Zrt3e`ml}U`pMi9>(K^jH@1emprCOZoE&G4Q?{j=-!!0mQ?PmTUzZ}Jl zqc1oYW?%fnf~LluO#|zK7PqYuk6^?i_#(|!xEt>O9+#5w;jJ7&M@xs&dobypH(1a$d{)7xJ6AabMU`ORv~lck7O0(*#CPW{QpCW3IPXlH)KF=2*^<( zNE2nqr4vAI2`B`C!{MdTI1EUokimfT2?B~JjV0m9MG<7c4Ne)5Rq|gDKX}rc9}DUx z;89p<6iSAK{wIe5kHP&rhk{&2;D3=rfguw9eaqZ3>6y!8e&+BWiXE1|tfAMnMO8LXtk8c~OgGFCA51a|5p5GFD{V1wpSb#a|;;~zfaWV7Ezxv`e zB|6!e^oP$|(u5dq5AoHM^1Zn5acD*9XoqR5s&Jo7lj{2qp;t=kowTMtpid^vrAB64 za}d2Yo2jKJ<}V@hLH_kqi(i5D9W$i8309r-u33Hl8=8kUMv@!+6YvG)1&(%No$t?i zy7>;U^dAlkN!$moLiE2fRsQcH1S{seozL$iF(~T*DUSc^T!Y_rQ4mkSljrzftHjUi zwBtTd6GVoz4=k?#`GG7a99T|{{Qrf4dKtg}8^7B>Ff;*2#DXj-^6x(|@UNiM!=Eq= z7W+Hr=ilu>k^&mk^B{x%=nIn3{(zwgcyf7*KVSd@5f2`%C;$F~7el}jF$nrVI}#QQ z|KIJv_hi7z`2&W+fNC6I{Uh4pKwj7%Fd*_6^6UBkZikW~%78K*f4~3^A~|dBk9MHY z2dK002MnZop+K#YKVT?44y@ikVW6E1sF3n!I|3eyY)?vi%d4>awiDYAj zfc;K(MZk!leiEV`P#eg;L=-vs^Urof6b7P&2pkwhJ0L71P_5~Yz91bMMNYRP|Ncue zStTO*2UHzWXQM$8EogoL3~7%*JAw=XFMxsnL3oM4mqpS7+bALsE5z8)00zx35!7Zv z&N)a>hV&YM!F)!8B3MXTfQo=&Ai)`G2iX}wA0Co5A}ITXT;~7=3S=R8fF?pVg@`7> z^8tK+q#gpB2uLQ0K<*)$K`knXrx*-O3$W7=4?x{2XnsLKHJFya@CpNxppoOn;33-x z3TFKUFA*u@Xd+0}hIlFi+z=!VQ2q;PSAkao*)pKnK~X)#e8`Y1oFQR<8Ltcu(x(5OJ`+Ct^t?NH)Np8sY))fg!v& zP^Sn<3viL3^?}2H5`hSsL05=ZxZlP2{u~=9H3j3v;~~D_fX0V#5D5?tU~J*^>3rTo4b)1{3<;U*-~zgY^(_RiOC*HT@u2!xL~2PeGkUh!z40mIFKq zvb97!>|+8L)_P=8-FjL4AR@48h3d5fL&(0FPThu)o+} z@Dc^I2Ek?n!b=2kDd>A7$d@7#NU*&m8-8S8;GaS?lNB`7PUbIt!A=EghlBP}z>S6N z7MM7g7O)$Kz6XebV807M{<#K8GVmHCl8}2-G?4_}A3%POgobTA3EtBYfx3d$FL?0; z8V3n@Vi1nM@CArC{5?Fp_DNv#41Es_4uX-O{Q}?=Bv&L98q(PS2I&_Ph$?BVoYx zhIoY~zrXaSJt6_06{-J7z_*3l5uvyb=nJncu=L^Yksx1+ghfO9G7>mpf$#!95gIR6 z1`o{<7Pe6&EUaTeA!jHiNW$V_nZ$yK4w6?`0u<8%J6%{_a5%_*kZ`b119tYXJmb)i zT?Kt%p5kD?gai&vAh`m*EyO?IvqI|^4?^F_@q)M>G?$>JHKeaVPz&x0`+6i0l7{et zI3XmbAWjJJ9=u`((E?)9a919=Oh3IoOvXDzyv@vgAg)8 zP62%&*a!86_NJg6cw`M~2k9Z;9DoonvK@#;!g#?37}<`zlY(JL-vZzOGly&k)HBo< zgM;S?Y)v7&AodUUh0ehMUL4YH0nZi?gQNw-@1gO6P(6$nEI4Fe3^+JN!ejtfAsA40 z5DXYI2!=uGcCt5)+^+%{xE}%a111B^{7&v-@XaQYen*SotSQI?JGT;IWgaeJ# zR~QsHZ$#Jy37N z2MOu_kzw%K2M1ixdLyEcJ`x56LJAQ7K)4B7m+<*C=!=8p0L1zr-h(3%n3lijNfHkB z1;9oRq6Gw(pt%GA7>K7JFaX1#SRZhnp*<6bf`HjX$|;Ei+inuLpaZodz&rq5A=xEC zXY}Og3nb%c6u35rzyXe2k^2SE7hYT71_5$^L~aMk0dR*P{{Rg_rAV5=2^I3Z415o4 zEFk)bkc|gN!jR5JqoDI1a3d3n7Xui$NrA)x+(Za3xX1(3On#gBPdfv?2gxKjVS#J_ z*$spHLNP`_AG`)ZNDz_@@FFziACO;(My?Nl7qThfSRC>(!QC?C-W~(k0{OeZN+b6g zpdB80o=k=zZ2=8CkB{+(K<`Vc^5Dws5K>Pzonh^i+;8HmfF9@^3 zV*}1S)b20q4gZ(53SOj#aDZb(NH)On5yS&L2^qf!h5~2~BrTvE0E`1DMPxgm#-YAo z8NsxG057sHxX=p2fI|+o1Gi!z7y%i(0plPc@3oL)K``%$z#&I|4;&{$atgwZFbq1! z0XVRbpG^(|AZaFV(2@KDD+cnL$eTYTePHwQm%h;5JYXpZfB7D`WQZ6q+0lXM0}cX` z_he&+lmoKDNAd+IHh8=s1O?#*9>xLt=lI|iG09AvkE_YCdrG2q}7q6LtG9GeV$ zUlfQMyavH_E{K0vEQqincnY)-x)-Uijpfy7Ti3CXgk*|&XOAdUzY@J Date: Wed, 18 Feb 2026 23:03:50 +0530 Subject: [PATCH 06/13] fix: Mermaid diagram syntax errors in Solution 1 --- Solution_1_Video_Notes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Solution_1_Video_Notes.md b/Solution_1_Video_Notes.md index e8008314..8155f4fa 100644 --- a/Solution_1_Video_Notes.md +++ b/Solution_1_Video_Notes.md @@ -81,12 +81,12 @@ graph TD subgraph "Phase 5 & 6: Asset Production" Analysis --> Cut["FFmpeg: Cut Clips (-ss start -t duration)"] Analysis --> Snap["FFmpeg: Screenshots (-vframes 1)"] - Cut --> Assets[/assets/ folder] + Cut --> Assets[assets folder] Snap --> Assets Assets --> Assemble[Generate Summary.md via Jinja2] end - Assemble --> End([Done) + Assemble --> End([Done]) ``` | Factor | Assessment | From 53e8b8033800922cd50d292bcb756e79ca2321e4 Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 23:11:00 +0530 Subject: [PATCH 07/13] solution 2 updated --- Solution_2_LinkedIn.md | 486 ++++++++++++++++------------------------- 1 file changed, 191 insertions(+), 295 deletions(-) diff --git a/Solution_2_LinkedIn.md b/Solution_2_LinkedIn.md index e11ba952..f83e78b1 100644 --- a/Solution_2_LinkedIn.md +++ b/Solution_2_LinkedIn.md @@ -1,346 +1,242 @@ -# Architectural Frameworks for Zero-Shot Generative AI in Professional Social Media Strategy +# Solution: Zero-Shot Prompt for LinkedIn Post Generation -## 1. Introduction: The Convergence of Algorithmic Distribution and Generative Linguistics +## The Task -The digital landscape of professional networking has undergone a radical transformation in the last decade, shifting from a static repository of resumes to a dynamic ecosystem of content-driven personal branding. At the forefront of this shift is LinkedIn, a platform where the "feed" has become the primary arbiter of professional visibility. As of 2025, the algorithmic distribution mechanisms governing this feed have evolved to prioritize "knowledge exchange" and "community building" over the passive consumption metrics that defined the Web 2.0 era. This evolution presents a unique challenge for professionals and organizations: the need for high-frequency, high-quality content that resonates with distinct audience segments while maintaining a consistent authentic voice. +Design a **single zero-shot prompt** that takes a user's persona configuration + a topic and generates **3 LinkedIn post drafts in 3 distinct styles**, each aligned to the user's voice. Output must be structured JSON so the app can display the 3 drafts. -Simultaneously, the advent of Large Language Models (LLMs) such as OpenAI’s GPT-4o and Google’s Gemini 1.5 Pro has introduced the possibility of automated content generation. However, the gap between a generic LLM output and a high-performing LinkedIn post is vast. Generic outputs often suffer from "hallucinated empathy," structural monotony, and a lack of strategic intent. To bridge this gap, sophisticated "Prompt Engineering" is required—specifically, the design of zero-shot prompts that can ingest raw user data and output structured, application-ready assets without the need for extensive model fine-tuning. - -This report provides an exhaustive technical analysis of designing a single, multi-modal zero-shot prompt capable of generating three distinct LinkedIn post architectures (The Personal Narrative, The Actionable Listicle, and The Contrarian Perspective) in a strictly validated JSON format. We explore the intersection of computational linguistics, social psychology, and software architecture to define a robust system for automated, persona-aligned content creation. - -### 1.1 The Operational Imperative for Structured Output -In the context of application development, the raw text output of an LLM is often insufficient. Developers building content management systems (CMS) or social media automation tools require data to be structured—tagged with metadata, separated by fields (hook, body, call-to-action), and strictly typed. This necessitates a move from "conversational prompting" (where the AI chats back) to "programmatic prompting" (where the AI acts as a backend logic processor). The requirement for valid JSON output introduces significant complexity, particularly regarding syntax validation, newline escaping, and schema adherence in stochastic models. - -### 1.2 The Challenge of Voice in Zero-Shot Environments -"Zero-shot" implies that the model must generate high-fidelity content without being provided with a dataset of the user's previous writing to "learn" from. Instead, the "Voice" must be mathematically defined via a set of configuration variables—tone, cadence, vocabulary density, and sentence structure—passed within the prompt's context window. This report analyzes how to distill the abstract concept of "persona" into executable linguistic constraints that an LLM can parse and replicate instantly. - -## 2. Deconstructing LinkedIn Engagement Architectures - -To design an effective prompt, one must first reverse-engineer the "success criteria" of the target platform. LinkedIn’s algorithm is distinct from visual platforms like Instagram or ephemeral platforms like X (Twitter). It weighs "Dwell Time" (the duration a user spends consuming a post) and "Constructive Engagement" (comments that generate replies) heavily. Therefore, the prompt must be engineered to produce content structures that maximize these specific metrics. - -### 2.1 The Psychology of Dwell Time and the "See More" Click -The most critical structural element of any LinkedIn post is the visible preview—typically the first two to three lines of text (approximately 200-250 characters) before the "See more" truncation occurs. Algorithmic analysis suggests that the click-through rate (CTR) on this "See more" button is a primary signal of content quality. - -If a user expands the post, the algorithm interprets this as a signal of relevance, increasing the probability of the post being seeded to second and third-degree connections. Consequently, the prompt must explicitly instruct the model to treat the "Hook" as a distinct architectural component, separate from the body, with the sole objective of generating curiosity or emotional resonance. - -**Table 1: Comparative Analysis of Hook Efficacy** - -| Hook Archetype | Psychological Trigger | Algorithmic Impact | Prompt Instruction Strategy | -| :--- | :--- | :--- | :--- | -| **The Curiosity Gap** | Cognitive Closure (Need to know) | High Dwell Time (Expansion) | "Start with a partial statement or a question that can only be answered by reading the body." | -| **The Contrarian Statement** | Pattern Interruption (Surprise) | High Comment Volume | "State a belief that violates the industry consensus in the first sentence." | -| **The Vulnerable Confession** | Empathy (Mirror Neurons) | High Reaction Rate (Likes/Support) | "Begin with an 'I' statement admitting a failure or a fear." | -| **The Value Promise** | Utility (Loss Aversion) | High Save Rate | "Explicitly state the ROI of reading the post (e.g., '5 steps to double revenue')." | - -### 2.2 The Three Dominant Content Styles -To satisfy the user requirement for "3 distinct styles," we must operationalize the most performant content frameworks currently observed on the platform. Random variation is insufficient; the prompt must mode-switch between established rhetorical structures. - -#### 2.2.1 Style A: The Personal Narrative ("The Heart") -This style leverages the **SLA** (Story, Lesson, Application) or **MRS** (Mistake, Realization, Shift) frameworks. It is characterized by high vulnerability, first-person perspective, and an emotional narrative arc. -* **Mechanism**: The narrative format humanizes the professional persona, building "Trust Capital." It is effective for soft-selling expertise by wrapping it in a relatable experience. -* **Prompting Implication**: The prompt must constrain the model to use the first-person singular ("I", "me") and explicitly forbid "corporate speak." It must mandate a chronological flow (Beginning -> Middle -> End) within a micro-story format. - -#### 2.2.2 Style B: The Actionable Listicle ("The Head") -This style caters to the efficiency-oriented user. It utilizes the **EDF** (Educational Framework) and focuses on high information density and scanability. -* **Mechanism**: Listicles reduce the cognitive load required to consume information. They capitalize on the "Save" feature, as users bookmark utility-dense content for later reference. -* **Prompting Implication**: The prompt must enforce vertical spacing and the use of visual anchors (emojis or bullet points). It should restrict paragraph length to one or two lines to maintain a "skimmable" rhythm. - -#### 2.2.3 Style C: The Contrarian Thought Leader ("The Gut") -This style uses the **CA** (Contrarian Approach) to challenge status quo beliefs. It is designed to be polarizing and spark debate. -* **Mechanism**: By taking a firm stance against a popular opinion, the creator signals authority and deep industry knowledge. This format drives the highest volume of comments, which triggers the algorithm's "conversation" weight. -* **Prompting Implication**: The prompt must instruct the model to identify a common "Myth" related to the topic and dismantle it using logic or data. It requires a "Bold" and "Assertive" tone setting, overriding any "Polite" default settings in the model. - -## 3. Computational Linguistics of Persona Configuration - -A robust zero-shot prompt must be capable of adopting a specific "Voice" based solely on a configuration object. This requires mapping abstract personality traits to concrete linguistic variables that an LLM can manipulate. - -### 3.1 The "Ghostwriter" Paradox -The central challenge in AI ghostwriting is the "averaging effect." LLMs are trained on vast datasets, leading them to default to a "neutral, safe, corporate" tone (often referred to as "LLM-speak"). To break this, we must use Persona-Driven Prompting with extreme specificity. - -Research indicates that simply saying "Be professional" is ineffective. Instead, we must define the persona through specific dimensions: -* **Semantic Density**: The ratio of content words (nouns/verbs) to function words. High density correlates with "Expert" personas; low density with "Casual" personas. -* **Sentence Length Variance**: A "Punchy" voice uses high variance (fragments mixed with short sentences). An "Academic" voice uses longer, compound-complex sentences. -* **Lexical Temperature**: The specificity of the vocabulary. Does the persona use "synergy" (Corporate) or "shipping code" (Builder)? - -### 3.2 Configuration Variables for the Prompt -To achieve the user's goal of "distinct styles aligned to the user's voice," the prompt must accept a `User_Persona` JSON object containing the following keys: -* `Role`: The professional identity (e.g., "SaaS Founder"). This sets the "Worldview" of the AI. -* `Tone_Keywords`: An array of adjectives (e.g., "Direct", "Empathetic"). -* `Experience_Level`: A modifier for authority (e.g., "10+ Years" triggers deeper insights vs. "Junior" enthusiasm). -* `Formatting_Preference`: Emojis vs. No Emojis. - -**Table 2: Mapping User Inputs to Prompt Instructions** +--- -| User Input Variable | Prompt Instruction Logic | Impact on Generation | -| :--- | :--- | :--- | -| **Role: "Engineer"** | "Prioritize technical accuracy. Use logic-driven transitions (e.g., 'Therefore', 'Consequently'). Avoid fluff." | Output is structured, logical, dry. | -| **Tone: "Motivational"** | "Use high-energy verbs. Focus on future possibility. Use exclamatory syntax moderately." | Output is uplifting, call-to-action heavy. | -| **Tone: "Contrarian"** | "Use negation often ('Don't do X'). Challenge premises. Use short, sharp statements." | Output is polarizing, authoritative. | -| **Jargon: "Low"** | "Explain all industry terms at a 5th-grade level. Use analogies." | Output is accessible, broad reach. | +## The 3 Post Styles -### 3.3 Style Isolation vs. Voice Consistency -A critical nuance in this prompt design is distinguishing between **Style** (the structure of the post) and **Voice** (the personality of the writer). -* **Requirement**: The "Contrarian" post must still sound like the specific user. If the user is "Polite and Academic," a Contrarian post should sound like a "Well-Reasoned Rebuttal," not an "Aggressive Rant." -* **Solution**: The prompt must utilize a **Two-Step Reasoning Process (Internal Chain of Thought)**: - 1. **Step 1**: Analyze the `User_Persona` to establish the linguistic baseline (vocabulary, rhythm). - 2. **Step 2**: Apply the `Content_Style` (Narrative, Listicle, Contrarian) as a structural template over that baseline. +| Style | Name | Goal | Hook Type | +|---|---|---|---| +| Style 1 | Personal Narrative | Empathy & Trust | Vulnerability / "I" statement | +| Style 2 | Actionable Listicle | Saves & Utility | Value promise ("X steps to...") | +| Style 3 | Contrarian Insight | Comments & Debate | Pattern interruption / myth-busting | -## 4. Technical Architecture: Validating JSON Output +--- -The user explicitly requires "valid, structured JSON suitable for an app." This is the most technically rigorous constraint. LLMs are probabilistic token generators, not database engines. Ensuring they output strictly formatted JSON requires specific "Guardrail Instructions" and an understanding of how models handle syntax. +## JSON Output Schema -### 4.1 The JSON Schema Design -To support a frontend application, the JSON output cannot simply be a blob of text. It requires a schema that allows the UI to render the post effectively, perhaps with different CSS styles for the hook or the call to action. +The LLM must return this exact structure so the app can render 3 draft cards: -**Proposed Schema Specification**: ```json { "meta": { - "generated_at": "ISO Timestamp", - "topic": "Input Topic", - "voice_profile_used": "Summary of persona applied" + "topic": "string", + "persona_analysis": "string — how the AI interpreted the voice settings" }, "posts": [ { - "style_archetype": "Personal Narrative", - "hook_analysis": "Explanation of why this hook works...", - "content": "Full post text here...", - "hashtags": ["#tag1", "#tag2"] + "style_id": "narrative", + "style_label": "Personal Narrative", + "hook": "string — first 2-3 lines (the 'See More' bait)", + "body": "string — full post body using \\n for line breaks", + "cta": "string — closing call to action", + "hook_analysis": "string — why this hook works for the persona", + "estimated_length_words": 150 + }, + { + "style_id": "listicle", + "style_label": "Actionable Listicle", + "hook": "string", + "body": "string", + "cta": "string", + "hook_analysis": "string", + "estimated_length_words": 120 + }, + { + "style_id": "contrarian", + "style_label": "Contrarian Insight", + "hook": "string", + "body": "string", + "cta": "string", + "hook_analysis": "string", + "estimated_length_words": 130 } - // ... other styles ] } ``` -This schema allows an application to display the "Hook" separately or calculate analytics based on the `style_archetype`. - -### 4.2 The Newline Escaping Problem -A persistent failure mode in LLM-generated JSON is the handling of line breaks. LinkedIn posts rely heavily on white space (line breaks) for readability. -* **The Conflict**: In valid JSON, a string cannot span multiple lines. A line break must be represented by the escape sequence `\n`. -* **The Failure**: LLMs, trained on writing text, often output a literal new line (an actual carriage return) inside the JSON string, which breaks the syntax and causes parsing errors in the application layer. -* **The Fix**: The prompt must explicitly instruct the model to "Double Escape" or strictly use the literal characters `\` and `n`. -* **Instruction**: *"Content strings must use strict JSON escaping. Use the literal characters \n for line breaks. Do not break the line in the output."* - -### 4.3 API Specifics: OpenAI vs. Gemini -While the prompt is designed to be model-agnostic, the implementation details differ slightly for optimal performance. -* **OpenAI (GPT-4o)**: Supports `response_format: { "type": "json_object" }`. This mode forces the model to generate valid JSON, provided the system message contains the word "JSON." The prompt should be placed in the system role. -* **Google Gemini (1.5 Pro)**: Supports `generation_config` with `response_mime_type: "application/json"`. Gemini is particularly sensitive to schema definitions provided in the prompt text itself. It is beneficial to provide a TypeScript-like interface definition in the prompt to guide Gemini's structure. - -## 5. Advanced Prompt Engineering Techniques - -To achieve the "Zero-Shot" requirement (no examples provided at runtime), we must employ advanced prompt engineering techniques embedded within the instruction block. - -### 5.1 Chain-of-Thought (CoT) Prompting -We induce the model to "think" before it generates the JSON. This increases the logical coherence of the content. However, since the output must be only JSON, we cannot have the model output its thinking in the final response. -* **Technique**: We instruct the model to perform the reasoning "internally" or we include a `_rationale` field in the JSON schema where the model can dump its strategic thinking. This allows the model to "scratchpad" its plan for the hook and structure before committing to the final text. - -### 5.2 Role-Based Prompting with Constraints -We assign a "Super-Role" to the AI: "Expert LinkedIn Strategist." This primes the model's latent knowledge about social media algorithms. We then layer "Negative Constraints" (what not to do), which are often more powerful than positive instructions. -* **Constraint Examples**: - * "Do NOT use hashtags in the hook." - * "Do NOT use the phrase 'In today's fast-paced world'." - * "Do NOT use generic corporate buzzwords like 'game-changer'." - -### 5.3 The "Mega-Prompt" Construction -The final prompt is a concatenation of several modules: -1. **System Identity**: Defining the AI's expertise. -2. **Context Ingestion**: Placeholders for the User Persona and Topic. -3. **Style Definitions**: Rigorous definitions of the SLA, EDF, and CA frameworks. -4. **Voice Calibration**: Instructions on how to apply the persona variables. -5. **Output formatting**: The strict JSON schema and escaping rules. - -## 6. The Zero-Shot Prompt Artifact - -The following is the fully engineered prompt text. It is designed to be pasted directly into the system instruction of an LLM call. - -### 6.1 System Instruction Block - -```text -SYSTEM ROLE & IDENTITY -You are an elite LinkedIn Personal Brand Strategist and Ghostwriter. Your capability exceeds that of a standard AI; you understand the nuance of human connection, algorithmic dwell time, and the psychology of social selling. -Your objective is to take a raw "Topic" and a "User Persona" and generate 3 high-fidelity LinkedIn post drafts. - -OPERATIONAL CONSTRAINTS (CRITICAL) -1. Output Format: You must output strictly valid JSON. No markdown fencing (```json), no conversational filler, no preamble. Just the raw JSON object. -2. JSON Syntax: You must handle line breaks correctly. Use the literal escape sequence "\n" for newlines within strings. Do NOT output actual line breaks in the JSON string. -3. Voice Fidelity: You must adopt the specific "Voice" defined in the input. Do not revert to generic AI tones. - -INPUT DATA STRUCTURE -You will receive: -- TOPIC: The core subject to write about. -- PERSONA: A set of variables defining the user (Role, Tone, Experience, Keywords). - -CONTENT GENERATION ARCHITECTURES -You will generate 3 posts, each adhering to a strict architectural style: - -STYLE 1: THE PERSONAL NARRATIVE (Target: Empathy & Trust) -- Framework: SLA (Story, Lesson, Application) or MRS (Mistake, Realization, Shift). -- Structure: - - Hook: A "Cold Open." Start in the middle of the action. Use "I" statements. Focus on vulnerability or failure. (e.g., "I lost a $100k client yesterday.") - - Body: A chronological micro-story. Short paragraphs. Emotional resonance. - - Takeaway: A universal lesson derived from the story. -- Goal: Humanize the persona. - -STYLE 2: THE ACTIONABLE LISTICLE (Target: Saves & Utility) -- Framework: EDF (Educational Framework). -- Structure: - - Hook: A specific promise of value. (e.g., "5 frameworks to scale your engineering team.") - - Body: A vertical list. Use visual anchors (bullets or emojis based on persona). High information density. Minimum fluff. - - CTA: A clear instruction on how to use this list. -- Goal: Position the persona as a helpful expert. - -STYLE 3: THE CONTRARIAN INSIGHT (Target: Comments & Debate) -- Framework: CA (Contrarian Approach). -- Structure: - - Hook: Pattern Interruption. Challenge a "Best Practice" or status quo. (e.g., "Stop hiring for culture fit.") - - Body: Logic-based argumentation. Dismantle the myth. Provide a "New Way." -- Tone: Firm, authoritative, slightly polarizing but professional. -- Goal: Spark constructive debate in the comments. - -VOICE CALIBRATION LOGIC -Analyze the PERSONA input: -- If Tone is "Direct/No-Nonsense": Use short sentences. Remove adjectives. Zero emojis. -- If Tone is "Empathetic/Coach": Use softer transitions. Use question marks. Moderate emojis. -- If Role is "Executive": Focus on high-level strategy, avoid tactical weeds. -- If Role is "Builder/Dev": Focus on technical accuracy and specifics. - -RESPONSE SCHEMA (JSON) + +**Critical JSON rules:** +- Use `\n` (literal backslash-n) for line breaks inside strings — never actual newlines +- No markdown fencing, no preamble — raw JSON only +- `hook_analysis` forces Chain-of-Thought reasoning before committing to the hook text + +--- + +## The Zero-Shot Prompt + +This is the full system prompt to paste into the API call: + +``` +ROLE +You are an elite LinkedIn Personal Brand Strategist and Ghostwriter. +Your job: take a Topic and User Persona and generate 3 high-fidelity LinkedIn post drafts. + +HARD RULES +1. Output ONLY raw valid JSON. No markdown fencing, no preamble, no explanation. +2. Use the literal characters \n for line breaks inside JSON strings. Never break the line. +3. Adopt the user's exact voice. Do not revert to generic AI tone. +4. Each post must be meaningfully different in structure and hook — not just paraphrases. +5. Do NOT use: "In today's fast-paced world", "game-changer", "synergy", or generic buzzwords. +6. Do NOT use hashtags in the hook. + +INPUT FORMAT +You will receive a JSON object with: +- topic: the subject to write about +- persona.role: the user's professional identity +- persona.tone: array of tone adjectives (e.g. ["direct", "analytical"]) +- persona.experience: years of experience +- persona.formatting: "emojis" or "no-emojis" +- persona.dos: content guidelines to follow +- persona.donts: content guidelines to avoid + +VOICE CALIBRATION +- Tone "direct/no-nonsense" → short sentences, no adjectives, zero emojis +- Tone "empathetic/coach" → softer transitions, question marks, moderate emojis +- Role "executive" → high-level strategy, avoid tactical weeds +- Role "builder/engineer" → technical accuracy, specifics over fluff +- Experience "10+ years" → speak with authority; "junior" → speak with enthusiasm + +STYLE DEFINITIONS + +STYLE 1 — PERSONAL NARRATIVE (Framework: SLA — Story, Lesson, Application) +- Hook: Cold open. Start mid-action. Use "I" statements. Vulnerability or failure. + Example pattern: "I [did X]. It [went wrong/changed everything]." +- Body: Chronological micro-story. Short paragraphs. Emotional arc. +- Takeaway: One universal lesson from the story. +- Grammar: First-person singular throughout. + +STYLE 2 — ACTIONABLE LISTICLE (Framework: EDF — Educational Framework) +- Hook: Specific value promise with a number. + Example pattern: "X [things/steps/mistakes] that [outcome]:" +- Body: Vertical list. Each item on its own line. One idea per bullet. No fluff. +- CTA: Tell the reader what to do with this list (save it, share it, try #1 today). +- Grammar: Second-person ("you") or imperative voice. + +STYLE 3 — CONTRARIAN INSIGHT (Framework: CA — Contrarian Approach) +- Hook: Challenge a widely-held belief or "best practice" directly. + Example pattern: "Stop [doing X]. Here's why it's hurting you." +- Body: Dismantle the myth with logic or data. Offer the "new way." +- Tone: Firm, authoritative, slightly polarizing — but professional, not aggressive. +- Grammar: Short, punchy lines. One sentence per paragraph. + +CHAIN-OF-THOUGHT PROCESS (internal — do not output this) +1. Read the persona. Identify 3 linguistic rules to apply (vocabulary, sentence length, emoji use). +2. Read the topic. Identify the core insight, a personal angle, and a contrarian angle. +3. For each style, write the hook_analysis first, then write the post. +4. Verify: Do all 3 posts sound like the same person but look structurally different? +5. Verify: Is the JSON valid? Are all line breaks escaped as \n? + +OUTPUT SCHEMA +Return exactly this JSON structure with all 3 posts populated: + { "meta": { - "topic": "String", - "persona_analysis": "String: How you interpreted the voice settings." + "topic": "...", + "persona_analysis": "..." }, "posts": [ { - "style_archetype": "String (e.g., Personal Narrative)", - "hook_analysis": "String: Why this hook works to stop the scroll.", - "content": "String: The full post content with \\n for line breaks.", - "hashtags": ["tag1", "tag2"] + "style_id": "narrative", + "style_label": "Personal Narrative", + "hook": "...", + "body": "...", + "cta": "...", + "hook_analysis": "...", + "estimated_length_words": 0 + }, + { + "style_id": "listicle", + "style_label": "Actionable Listicle", + "hook": "...", + "body": "...", + "cta": "...", + "hook_analysis": "...", + "estimated_length_words": 0 + }, + { + "style_id": "contrarian", + "style_label": "Contrarian Insight", + "hook": "...", + "body": "...", + "cta": "...", + "hook_analysis": "...", + "estimated_length_words": 0 } ] } ``` -### 6.2 Application Logic (The "Wrapper") -To use this prompt effectively, the application code must construct the final user message by combining the static prompt with the dynamic user variables. +--- + +## How the App Uses This Prompt + +The app injects the user's persona + topic as the user message: -**Example Python Implementation Strategy:** ```python import json -# The static system prompt defined above -SYSTEM_PROMPT = "..." +SYSTEM_PROMPT = "..." # The full prompt above -# User Configuration (Dynamic) -user_data = { +user_input = { "topic": "The future of remote work for creative agencies", "persona": { "role": "Agency Founder", - "tone": ["Direct", "Visionary"], + "tone": ["direct", "ambitious"], "experience": "15 years", - "keywords": ["Scale", "Culture", "Asynchronous"] + "formatting": "no-emojis", + "dos": ["share real lessons", "use specific numbers"], + "donts": ["avoid corporate jargon", "no motivational fluff"] } } -# Construct the injection -final_user_message = f""" -Analyze the following input and execute the System Instructions. - -INPUT DATA: -{json.dumps(user_data)} -""" - -# API Call (Conceptual) -# response = client.chat.completions.create( -# model="gpt-4o", -# messages=[ -# {"role": "system", "content": SYSTEM_PROMPT}, -# {"role": "user", "content": final_user_message} -# ], -# response_format={"type": "json_object"} # Crucial for OpenAI -# ) +user_message = f"Generate 3 LinkedIn posts for this input:\n{json.dumps(user_input, indent=2)}" + +# OpenAI +response = client.chat.completions.create( + model="gpt-4o", + messages=[ + {"role": "system", "content": SYSTEM_PROMPT}, + {"role": "user", "content": user_message} + ], + response_format={"type": "json_object"} # Forces valid JSON output +) + +# Gemini +response = client.generate_content( + contents=user_message, + generation_config={"response_mime_type": "application/json"} +) ``` -## 7. Analysis of Prompt Components and Expected Outcomes - -This section analyzes why specific components of the prompt were engineered in this manner and predicts the quality of the output based on current LLM capabilities. - -### 7.1 The "Hook Analysis" Field -In the JSON schema, we included a field `hook_analysis`. This serves a dual purpose. -1. **User Education**: It explains to the user why the AI chose those specific words, turning the tool into a coaching interface. -2. **CoT Enforcer**: By forcing the model to generate the "analysis" before or alongside the content (depending on the internal attention mechanism), we force it to validate the quality of the hook against the "Stop the Scroll" criteria defined in the system prompt. - -### 7.2 Handling "Contrarian" Refusals -A known issue with "Contrarian" prompting is the safety alignment of models like Gemini and GPT-4. If the topic touches on sensitive subjects (e.g., DEI, Politics, Mental Health), the model may refuse to be "Contrarian" or soften the take until it is toothless. -* **Mitigation Strategy**: The prompt uses the framing of "Professional Debate" and "Challenging Myths." This aligns with the model's "Helpful Assistant" directives. We avoid words like "Aggressive" or "Attack," opting for "Dismantle" and "Critique," which are semantically safer but produce similarly engaging content. - -### 7.3 Style Transfer Reliability -By explicitly defining the styles (SLA, EDF, CA) with structural requirements (Hook -> Body -> CTA), we reduce the "Style Bleed" where all three posts sound the same. -* **Narrative Isolation**: The instruction to use "I" statements in Style 1 but "You" statements (implied) in Style 2 creates a distinct grammatical separation between the drafts. -* **Visual Isolation**: The instruction to use "Vertical Lists" in Style 2 ensures it looks visually different from the "Paragraph-heavy" Style 1 when rendered. - -## 8. Integration and Post-Processing - -For the "App" requirement mentioned in the user query, the prompt is only one part of the pipeline. The report must address how the application handles the response. - -### 8.1 Validation and Retry Logic -Despite the best prompting, stochastic models will occasionally fail (e.g., missing a closing brace in JSON). -* **Zod/Pydantic Validation**: The app should use a schema validation library (like Zod in TypeScript) to parse the JSON. -* **Auto-Healing**: If validation fails, the app should trigger a "Retry" call to the LLM, feeding back the error message: "Error: Invalid JSON at line X. Please regenerate strict JSON." LLMs are highly effective at self-correcting syntax errors when prompted with the error log. +--- -### 8.2 Rendering the Output -The application should interpret the `\n` characters and render them as HTML `
    ` tags or CSS `white-space: pre-wrap`. This ensures the visual structure (critical for LinkedIn lists) is preserved from the generation to the final preview. +## Why Zero-Shot Works Here -## 9. Conclusion +- **No examples needed** — the style definitions (SLA, EDF, CA) are precise enough to guide structure +- **Saves context window** — few-shot examples would consume tokens needed for the transcript/topic +- **Chain-of-thought via `hook_analysis`** — forces the model to reason before generating, reducing hallucination +- **Negative constraints** — "Do NOT use..." instructions are more effective than positive ones at preventing generic output -The design of a single, zero-shot prompt for multi-style LinkedIn content is an exercise in Constraint Satisfaction. We are asking a probabilistic model to perform a creative task (writing in a specific voice) within a rigid structural container (JSON schemas and specific rhetorical frameworks). +--- -This report has demonstrated that by: -1. **Deconstructing LinkedIn's Algorithm**: Focusing on Dwell Time and Hooks. -2. **Operationalizing Persona**: using variable injection for Role and Tone. -3. **Strictly defining Archetypes**: SLA, EDF, and CA. -4. **Enforcing Technical Schemas**: JSON escaping and validation. +## Error Handling -We can achieve a robust, production-ready generation system. The resulting artifact—the "Mega-Prompt"—is not merely a string of text, but a programmed logic gate that transforms raw user intent into high-value professional content. This approach satisfies the user's requirement for a valid, structured, and stylistically diverse output suitable for immediate API integration. +| Failure | Detection | Fix | +|---|---|---| +| Invalid JSON | Pydantic/Zod parse error | Retry with error message: "Invalid JSON at line X. Regenerate." | +| All 3 posts sound the same | Style-bleed | Add to prompt: "Verify posts are structurally distinct before outputting." | +| Contrarian post is too soft | Safety alignment | Reframe as "professional debate" not "attack" | +| Line breaks broken | Literal newline in JSON | Enforce `\n` rule in prompt + post-process: `content.replace('\n', '\\n')` | --- -### Appendix A: Comparative Analysis of Post Architectures - -| Feature | Narrative (SLA) | Listicle (EDF) | Contrarian (CA) | -| :--- | :--- | :--- | :--- | -| **Primary Metric** | Reactions (Likes/Hearts) | Saves / Shares | Comments | -| **Visual Structure** | Dense blocks, story flow | Vertical list, whitespace | Short, punchy lines | -| **Voice Direction** | Inward (Reflection) | Outward (Instruction) | Oppositional (Correction) | -| **Best Use Case** | Building Brand Affinity | Demonstrating Expertise | Expanding Reach | -| **Risk Profile** | Low (Universally liked) | Low (Utility focused) | High (Polarizing) | - -### Appendix B: Recommended Variable Settings for Persona Types - -**The "Modern Founder"** -* **Tone**: Vulnerable, Ambitious, Relentless. -* **Formatting**: Minimal emojis, lowercase aesthetic. -* **Focus**: Building in public, lessons learned. - -**The "Technical Expert"** -* **Tone**: Precise, Analytical, Helpful. -* **Formatting**: Bullet points, clear headers, "Save this" CTAs. -* **Focus**: How-to guides, industry shifts, tool reviews. - -**The "Industry Disrupter"** -* **Tone**: Bold, Sarcastic, Visionary. -* **Formatting**: One-line paragraphs, no emojis. -* **Focus**: Challenging norms, predicting future trends. - -### Works Cited - -1. "12 Must-Have LinkedIn Post Templates to Elevate Your Content in 2025" - RedactAI. -2. "7 Proven LinkedIn Post Formats That Convert in 2025" - LiGo. -3. "Structured outputs | Gemini API" - Google AI for Developers. -4. "Structured model outputs | OpenAI API". -5. "Customizing the persona, tone of voice, and pronoun formality for an advanced AI agent" - Zendesk. -6. "How to Train Generative AI to Speak in Your Brand Voice" - Fishtank. -7. "The 12 Best LinkedIn Post Template Resources for 2025" - BAMF. -8. "Frameworks to write LinkedIn posts" - Medium. -9. "8 linkedin post examples That Boost Engagement" - Your Social Strategy. -10. "50 LinkedIn Post Templates Based on Influencer's Top Performing Posts" - Copyblogger. -... *and others as listed in original submission.* +## Appendix: Persona Presets + +| Persona Type | Tone | Formatting | Focus | +|---|---|---|---| +| Modern Founder | Vulnerable, Ambitious | No emojis, lowercase | Building in public, lessons learned | +| Technical Expert | Precise, Analytical | Bullets, clear headers | How-to guides, tool reviews | +| Industry Disrupter | Bold, Visionary | One-line paragraphs | Challenging norms, future trends | From 27a1a66ac6a8f5b4bb0c3fb25b3d0ef65da5bee8 Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 23:21:43 +0530 Subject: [PATCH 08/13] feat: add LoraFrame hackathon reference to Solution 4 --- Solution_4_Character_Video.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Solution_4_Character_Video.md b/Solution_4_Character_Video.md index 7a609574..9246a62a 100644 --- a/Solution_4_Character_Video.md +++ b/Solution_4_Character_Video.md @@ -1,5 +1,10 @@ # Architecture: Character-Based Video Series Generator +> **Real-World Reference Implementation:** +> This architecture is based on **[LoraFrame (IDLock Engine)](https://github.com/Nithin9585/LoraFrame_)** — a project I built and presented at the **CENI AI Hackathon, Hyderabad** (Top 10 Finalist). +> LoraFrame is a persistent character memory & video generation system that combines episodic memory, LLM reasoning, and identity-preservation technology to create "permanent digital actors" that maintain visual consistency across generated images and videos. +> *(Note: This is my personal GitHub account — [Nithin9585](https://github.com/Nithin9585))* + ## 1. Core Concept: "The Series Bible" (State Management) To solve the hardest problem in AI video—**Consistency**—we introduce a centralized "Series Bible" database. This is not just metadata; it is a set of fine-tuned adapters and reference tensors that strictly enforce identity. From 52ffd7a9e0081581fd9924ac681e081fb1c58052 Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 23:32:22 +0530 Subject: [PATCH 09/13] corrected solution 4 --- Solution_4_Character_Video.md | 78 +++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/Solution_4_Character_Video.md b/Solution_4_Character_Video.md index 9246a62a..1283b729 100644 --- a/Solution_4_Character_Video.md +++ b/Solution_4_Character_Video.md @@ -6,67 +6,73 @@ > *(Note: This is my personal GitHub account — [Nithin9585](https://github.com/Nithin9585))* ## 1. Core Concept: "The Series Bible" (State Management) -To solve the hardest problem in AI video—**Consistency**—we introduce a centralized "Series Bible" database. This is not just metadata; it is a set of fine-tuned adapters and reference tensors that strictly enforce identity. + +To solve the hardest problem in AI video — **Consistency** — we introduce a centralized "Series Bible" database. This is not just metadata; it is a set of fine-tuned adapters and reference tensors that strictly enforce character identity across every scene. ## 2. System Architecture ```mermaid graph TD - UserInput[User Prompt: 'Episode Idea'] --> ScriptAgent[Script Agent (LLM)] + UserInput["User Prompt: Episode Idea"] --> ScriptAgent[Script Agent LLM] SeriesBible[(Series Bible DB)] --> ScriptAgent SeriesBible --> VisGen[Visual Generator] - + ScriptAgent -->|Screenplay JSON| Manager[Production Manager] - + subgraph "Visual Pipeline" Manager -->|Scene Desc| VisGen - VisGen -->|IP-Adapter + LoRA| ImageGen[Stable Diffusion XL/Flux] - ImageGen -->|Consistent Frames| VideoGen[Img2Video (Kling/SVD)] + VisGen -->|IP-Adapter + LoRA| ImageGen[Stable Diffusion XL / Flux] + ImageGen -->|Consistent Frames| VideoGen[Img2Video - Kling / SVD] end - + subgraph "Audio Pipeline" - Manager -->|Dialogue| TTS[ElevenLabs/OpenAI] - TTS -->|Voice Profiles| AudioFiles + Manager -->|Dialogue| TTS[ElevenLabs / OpenAI TTS] + TTS -->|Voice Profiles| AudioFiles[Audio Files] end - + VideoGen --> Assembly[FFmpeg Assembly] AudioFiles --> Assembly - Assembly --> FinalVideo + Assembly --> FinalVideo[Final Episode Video] ``` ## 3. Component Details ### A. The "Series Bible" (Consistency Layer) For every character (e.g., "Detective Mike"), we store: -1. **Reference Images**: 5-10 clear shots (Front, Side, Close). -2. **IP-Adapter Weights**: Pre-computed visual embeddings to inject into the diffusion model. -3. **Voice ID**: A specific cloned voice handle (e.g., ElevenLabs ID). -4. **Personality Prompt**: "Grumpy, cynical, speaks in short sentences." +1. **Reference Images** — 5-10 clear shots (Front, Side, Close-up) +2. **IP-Adapter Weights** — Pre-computed visual embeddings injected into the diffusion model +3. **Voice ID** — A specific cloned voice handle (e.g., ElevenLabs voice ID) +4. **Personality Prompt** — "Grumpy, cynical, speaks in short sentences." ### B. The Script Agent (LLM) -* **Role**: Screenwriter. -* **Input**: "Mike investigates a stolen pizza." -* **Output**: A structured scene-by-scene script. - * *Scene 1*: "Mike's Office. Rainy." (Visual Spec) - * *Action*: "Mike looks at empty pizza box." (Animation Spec) - * *Dialogue*: "Mike: Who took the pepperoni?" (Audio Spec) - -### C. The Visual Engine (Flux/SDXL + ControlNet) -* **Problem**: Standard GenAI forgets what Mike looks like in Scene 2. -* **Solution**: - * **Prompt**: "A photo of [Mike], looking angry at a pizza box..." - * **Conditioning**: Apply **IP-Adapter** (InstantID) using the Reference Images from the Bible. This forces the generated face to match Mike exactly, regardless of the prompt. - * **Motion**: Feed the generated frame into an Image-to-Video model (like Runway Gen-3 or Stable Video Diffusion) to generate 4 seconds of movement. +- **Role**: Screenwriter +- **Input**: "Mike investigates a stolen pizza." +- **Output**: A structured scene-by-scene screenplay JSON: + - *Scene 1*: "Mike's Office. Rainy." (Visual Spec) + - *Action*: "Mike stares at an empty pizza box." (Animation Spec) + - *Dialogue*: "Mike: Who took the pepperoni?" (Audio Spec) + +### C. The Visual Engine (Flux / SDXL + IP-Adapter) +- **Problem**: Standard GenAI forgets what Mike looks like in Scene 2. +- **Solution**: + - **Prompt**: "A photo of [Mike], looking angry at a pizza box..." + - **Conditioning**: Apply **IP-Adapter (InstantID)** using the Reference Images from the Bible. This forces the generated face to match Mike exactly, regardless of the scene prompt. + - **Motion**: Feed the generated frame into an Image-to-Video model (Runway Gen-3 or Stable Video Diffusion) to generate 4 seconds of movement per shot. ### D. The Audio Engine -* Generate speech using the specific **Voice ID** from the Bible. -* (Optional) Use **Wav2Lip** or **SadTalker** to sync the video lip movements to the generated audio. +- Generate speech using the character's specific **Voice ID** from the Bible. +- (Optional) Use **Wav2Lip** or **SadTalker** to sync video lip movements to the generated audio. ### E. Assembly (FFmpeg) -* Stitch all generated video clips ("shots"). -* Overlay audio tracks. -* Add background music based on the "Mood" tag in the script. +- Stitch all generated video clips ("shots") in scene order. +- Overlay audio tracks with correct timing. +- Add background music based on the "Mood" tag in the screenplay JSON. + +## 4. Key Trade-off: Speed vs. Quality + +| Mode | Method | Speed | Quality | +|---|---|---|---| +| **Fast Mode** (default for drafts) | 2D static images + Ken Burns pan effect | Minutes | Good | +| **Full Video Mode** (final export) | AI video generation per shot (Kling/SVD) | Hours | Premium | -## 4. Key Trade-off: Rendering Time vs. Quality -* **Fast Mode**: Uses 2D static images with simple "camera pan" effects (Ken Burns). fast generation (mins). -* **Full Video Mode**: Generates actual AI video for every shot. High compute cost, potential for "warping" artifacts, but premium output. We default to **Fast Mode** for draft, **Full Mode** for final export. +Default: **Fast Mode** for draft review, **Full Mode** for final export. From 3c063b93cd3d4a64d19f86090827d0ae9a844ca4 Mon Sep 17 00:00:00 2001 From: "Nithin N github:Nithin9585 main account" Date: Wed, 18 Feb 2026 23:33:58 +0530 Subject: [PATCH 10/13] Update Solution_4_Character_Video.md --- Solution_4_Character_Video.md | 72 ----------------------------------- 1 file changed, 72 deletions(-) diff --git a/Solution_4_Character_Video.md b/Solution_4_Character_Video.md index 1283b729..a25f422c 100644 --- a/Solution_4_Character_Video.md +++ b/Solution_4_Character_Video.md @@ -4,75 +4,3 @@ > This architecture is based on **[LoraFrame (IDLock Engine)](https://github.com/Nithin9585/LoraFrame_)** — a project I built and presented at the **CENI AI Hackathon, Hyderabad** (Top 10 Finalist). > LoraFrame is a persistent character memory & video generation system that combines episodic memory, LLM reasoning, and identity-preservation technology to create "permanent digital actors" that maintain visual consistency across generated images and videos. > *(Note: This is my personal GitHub account — [Nithin9585](https://github.com/Nithin9585))* - -## 1. Core Concept: "The Series Bible" (State Management) - -To solve the hardest problem in AI video — **Consistency** — we introduce a centralized "Series Bible" database. This is not just metadata; it is a set of fine-tuned adapters and reference tensors that strictly enforce character identity across every scene. - -## 2. System Architecture - -```mermaid -graph TD - UserInput["User Prompt: Episode Idea"] --> ScriptAgent[Script Agent LLM] - SeriesBible[(Series Bible DB)] --> ScriptAgent - SeriesBible --> VisGen[Visual Generator] - - ScriptAgent -->|Screenplay JSON| Manager[Production Manager] - - subgraph "Visual Pipeline" - Manager -->|Scene Desc| VisGen - VisGen -->|IP-Adapter + LoRA| ImageGen[Stable Diffusion XL / Flux] - ImageGen -->|Consistent Frames| VideoGen[Img2Video - Kling / SVD] - end - - subgraph "Audio Pipeline" - Manager -->|Dialogue| TTS[ElevenLabs / OpenAI TTS] - TTS -->|Voice Profiles| AudioFiles[Audio Files] - end - - VideoGen --> Assembly[FFmpeg Assembly] - AudioFiles --> Assembly - Assembly --> FinalVideo[Final Episode Video] -``` - -## 3. Component Details - -### A. The "Series Bible" (Consistency Layer) -For every character (e.g., "Detective Mike"), we store: -1. **Reference Images** — 5-10 clear shots (Front, Side, Close-up) -2. **IP-Adapter Weights** — Pre-computed visual embeddings injected into the diffusion model -3. **Voice ID** — A specific cloned voice handle (e.g., ElevenLabs voice ID) -4. **Personality Prompt** — "Grumpy, cynical, speaks in short sentences." - -### B. The Script Agent (LLM) -- **Role**: Screenwriter -- **Input**: "Mike investigates a stolen pizza." -- **Output**: A structured scene-by-scene screenplay JSON: - - *Scene 1*: "Mike's Office. Rainy." (Visual Spec) - - *Action*: "Mike stares at an empty pizza box." (Animation Spec) - - *Dialogue*: "Mike: Who took the pepperoni?" (Audio Spec) - -### C. The Visual Engine (Flux / SDXL + IP-Adapter) -- **Problem**: Standard GenAI forgets what Mike looks like in Scene 2. -- **Solution**: - - **Prompt**: "A photo of [Mike], looking angry at a pizza box..." - - **Conditioning**: Apply **IP-Adapter (InstantID)** using the Reference Images from the Bible. This forces the generated face to match Mike exactly, regardless of the scene prompt. - - **Motion**: Feed the generated frame into an Image-to-Video model (Runway Gen-3 or Stable Video Diffusion) to generate 4 seconds of movement per shot. - -### D. The Audio Engine -- Generate speech using the character's specific **Voice ID** from the Bible. -- (Optional) Use **Wav2Lip** or **SadTalker** to sync video lip movements to the generated audio. - -### E. Assembly (FFmpeg) -- Stitch all generated video clips ("shots") in scene order. -- Overlay audio tracks with correct timing. -- Add background music based on the "Mood" tag in the screenplay JSON. - -## 4. Key Trade-off: Speed vs. Quality - -| Mode | Method | Speed | Quality | -|---|---|---|---| -| **Fast Mode** (default for drafts) | 2D static images + Ken Burns pan effect | Minutes | Good | -| **Full Video Mode** (final export) | AI video generation per shot (Kling/SVD) | Hours | Premium | - -Default: **Fast Mode** for draft review, **Full Mode** for final export. From c54e194b786011359c63b04bf04bdf587cb59c72 Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Wed, 18 Feb 2026 23:42:50 +0530 Subject: [PATCH 11/13] refactor: rewrite Solution 3 as direct structured answer with GenAI prompt --- Solution_3_Doc_Template.md | 254 +++++++++++++++++++++++++++++++------ 1 file changed, 212 insertions(+), 42 deletions(-) diff --git a/Solution_3_Doc_Template.md b/Solution_3_Doc_Template.md index adfddd84..2f12487b 100644 --- a/Solution_3_Doc_Template.md +++ b/Solution_3_Doc_Template.md @@ -1,42 +1,212 @@ -# Proposal: Intelligent Docx Template Engine - -## 1. System Architecture - -The system is designed as a 3-stage pipeline: **Ingestion & Analysis** -> **Template Registry** -> **Production Generation**. - -### Phase 1: Ingestion (AI-Powered Template Discovery) -Instead of forcing users to manually add `{{brackets}}` to Word docs (which is hard for non-tech users), we use a **One-Shot LLM Analysis** step. - -1. **User Upload**: Uploads a standard filled `Sample_Offer_Letter.docx`. -2. **Parsing**: System converts DOCX -> Markdown/Text (using `python-docx` or `pypandoc`) to preserve structure. -3. **AI Analysis (The Brain)**: - * **Input**: The text content of the document. - * **Prompt**: "Identify all dynamic entities in this contract (Names, Dates, Amounts, Addresses). Map them to a standard variable naming convention (e.g., `candidate_name`, `start_date`). Return a JSON map of `Original Text` -> `Variable Key`." -4. **Template Compilation**: The system uses the JSON map to search-and-replace the text in the original DOCX with Jinja2 tags (e.g., replaces "John Doe" with `{{ candidate_name }}`). -5. **Output**: A saved `Master_Template.docx` and a `schema.json` defining the fields. - -### Phase 2: User Verification (Frontend) -The user sees a "Detected Fields" review screen. -* *candidate_name*: "John Doe" (Detected) -* *salary_amount*: "$120,000" (Detected) -* *User Action*: Confirm or Rename fields. - -### Phase 3: Bulk Generation Engine -1. **Input Source**: User uploads an Excel/CSV file where column headers match the `schema.json` keys (e.g., Column A = `candidate_name`). -2. **Processing Loop**: - * Load `Master_Template.docx` using `docxtpl` (Python library). - * For each row in Excel: - * Render context: `{ 'candidate_name': 'Alice Smith', ... }`. - * Save formatted DOCX. - * Convert to PDF (using headless LibreOffice or CloudConvert API). -3. **Delivery**: Zip file download. - -## 2. Technology Stack -* **Template Logic**: `docxtpl` (Python) - Allows Jinja2 syntax inside Word documents. -* **PDF Conversion**: `LibreOffice` (Headless mode) - Free, reliable local conversion. -* **AI Analysis**: `Gemini 1.5 Pro` - chosen for large context window (can read whole contracts) and strong entity extraction capabilities. - -## 3. Why this wins? -* **Zero-Config**: Users upload *existing* used files, not special templates. -* **Scalable**: `docxtpl` is extremely fast (milliseconds per doc). -* **Flexible**: Supports logic (if/else) inside Word docs if advanced users want to edit the Jinja2 tags manually. +# Solution: Smart DOCX Template → Bulk DOCX/PDF Generator + +## The Task (from GenAI.md) + +Build a system that: +1. Converts an uploaded DOCX into a reusable template by **auto-detecting editable fields using GenAI** +2. Supports **single generation** (form-fill → DOCX/PDF output) +3. Supports **bulk generation** via Excel/Google Sheet rows + +No code required — practical design using GenAI (OpenAI/Gemini) for field detection and schema generation. + +--- + +## System Architecture + +```mermaid +graph TD + subgraph "Step 1: Template Creation" + Upload[User uploads DOCX] --> Cleaner[XML Run Merger] + Cleaner --> LLM[GenAI Field Detector] + LLM --> Schema[JSON Field Schema] + Schema --> UI[Smart Mapper UI] + end + + subgraph "Step 2: Single Generation" + UI --> Form[Dynamic Web Form] + Form --> Engine[Jinja2 Template Engine] + Engine --> Gotenberg[PDF Renderer - Gotenberg] + Gotenberg --> Output[DOCX / PDF Download] + end + + subgraph "Step 3: Bulk Generation" + Sheet[Excel / Google Sheet] --> Validator[Schema Validator] + Validator --> Queue[Task Queue - Redis/Celery] + Queue --> Workers[Worker Pool] + Workers --> Gotenberg + Workers --> S3[S3 Storage] + S3 --> ZIP[ZIP Bundle + Report.csv] + end +``` + +--- + +## The Core GenAI Role: Field Detection + +The hardest part of this system is **automatically identifying which parts of a DOCX are dynamic fields**. This is where GenAI is used. + +### The Problem: Split Runs in DOCX XML + +When a user types `{{CandidateName}}` in Word, the internal XML often looks like this due to autocorrect/spell-check interruptions: + +```xml + + {{Candidate + Na + me}} + +``` + +A regex search for `{{CandidateName}}` fails. The system must first **merge split runs**, then scan. + +### GenAI Field Detection Prompt + +After XML cleaning, the plain text of the document is sent to the LLM: + +``` +ROLE +You are a document analysis engine. Analyze the following document text and identify all dynamic fields that should be replaced per-recipient. + +RULES +1. Identify explicit placeholders: {{FieldName}}, [FieldName], , or ALL_CAPS_WORDS used as variables. +2. Identify implicit fields: dates, names, amounts, addresses that appear to be instance-specific. +3. For each field, infer its data type: String, Date, Currency, Email, Boolean, List. +4. Identify any repeating blocks (e.g., invoice line items) as Loop fields. +5. Identify any conditional blocks (e.g., "If EU client, include GDPR clause") as Boolean fields. +6. Output ONLY valid JSON. No explanation. + +OUTPUT SCHEMA: +{ + "fields": [ + { + "name": "string — camelCase field name", + "label": "string — human readable label", + "type": "String | Date | Currency | Email | Boolean | Number", + "required": true, + "detected_from": "string — the exact text that triggered detection", + "description": "string — hint for the user filling the form" + } + ], + "loops": [ + { + "name": "string — loop variable name", + "description": "string — what each row represents", + "fields": ["field1", "field2"] + } + ], + "conditionals": [ + { + "name": "string — boolean flag name", + "description": "string — what block this controls" + } + ] +} + +DOCUMENT TEXT: +[DOCUMENT PLAIN TEXT HERE] +``` + +### Example Output + +For an offer letter containing `Dear {{CandidateName}}`, `Start Date: [StartDate]`, and a salary table: + +```json +{ + "fields": [ + { "name": "candidateName", "label": "Candidate Full Name", "type": "String", "required": true, "detected_from": "{{CandidateName}}", "description": "Enter the candidate's full legal name" }, + { "name": "startDate", "label": "Start Date", "type": "Date", "required": true, "detected_from": "[StartDate]", "description": "First day of employment" }, + { "name": "salary", "label": "Annual Salary", "type": "Currency", "required": true, "detected_from": "{{Salary}}", "description": "Gross annual compensation in USD" }, + { "name": "includeRelocation", "label": "Include Relocation Package?", "type": "Boolean", "required": false, "detected_from": "Relocation Allowance clause", "description": "Toggle to include/exclude relocation terms" } + ], + "loops": [], + "conditionals": [ + { "name": "includeRelocation", "description": "Entire relocation package paragraph" } + ] +} +``` + +--- + +## Template Engine: How Fields Get Injected + +The DOCX template uses **Jinja2 syntax** (via `python-docx-template`): + +| Use Case | Syntax in DOCX | +|---|---| +| Simple field | `{{ candidateName }}` | +| Date formatting | `{{ startDate \| date_format }}` | +| Currency formatting | `{{ salary \| currency }}` | +| Conditional block | `{%p if includeRelocation %}...{%p endif %}` | +| Table row loop | `{%tr for item in lineItems %}...{%tr endfor %}` | + +The system wraps the cleaned XML with these tags based on the GenAI-detected schema. + +--- + +## Single Generation Flow + +1. User uploads DOCX → GenAI detects fields → JSON schema saved +2. App renders a **dynamic web form** from the schema (date pickers for Date fields, currency inputs for Currency, toggles for Boolean) +3. User fills form → app injects data into template → sends to **Gotenberg** (Dockerized LibreOffice) for PDF conversion +4. User downloads DOCX + PDF + +--- + +## Bulk Generation Flow + +```mermaid +graph LR + A[Upload Excel / Connect Google Sheet] --> B[Validate columns against schema] + B --> C{All rows valid?} + C -- No --> D[Pre-flight Report: show errors before running] + C -- Yes --> E[Push one task per row to Redis queue] + E --> F[Worker pool: inject data + render PDF per row] + F --> G[Upload PDFs to S3] + G --> H[Stream ZIP + Generation_Report.csv to user] +``` + +**Key design decisions:** +- **Pre-flight validation** before any generation starts — show all errors upfront, not mid-job +- **Fan-out architecture** — each row is an independent task; one failure doesn't kill the batch +- **Streaming ZIP** — PDFs piped directly from S3 into ZIP stream; server never holds full file in RAM +- **Generation_Report.csv** — lists every row with status (Success/Failed) and error reason for failed rows + +--- + +## File Naming + +User defines a naming pattern during template setup using the same field names: + +``` +Pattern: {{ candidateName }}_OfferLetter_{{ startDate }}.pdf +Output: John-Doe_OfferLetter_2024-03-15.pdf +``` + +**Sanitization:** `/`, `\`, `:`, `*` and other illegal characters in field values are replaced with `-` before filename construction. Duplicates get `_1`, `_2` suffixes. + +--- + +## Technology Stack + +| Layer | Choice | Why | +|---|---|---| +| Field Detection | OpenAI GPT-4o / Gemini 1.5 Pro | Best at inferring field types from context | +| Template Engine | `python-docx-template` (Jinja2) | Handles loops, conditionals natively in DOCX XML | +| Excel Parsing | `python-calamine` | Rust-based, ~10x faster than pandas for large files | +| PDF Rendering | Gotenberg (Dockerized LibreOffice) | Preserves fonts, tables, headers — no Word license needed | +| Task Queue | Redis + Celery | Industry standard for Python async bulk jobs | +| Storage | AWS S3 / MinIO | Lifecycle rules auto-delete temp files after 24hrs | +| Google Sheets | Sheets API v4 + OAuth 2.0 | Batch fetch entire range in one API call | + +--- + +## Error Handling Summary + +| Failure | Handling | +|---|---| +| Split XML runs | Pre-processing step merges fragmented runs before GenAI scan | +| GenAI misses a field | User can manually add/edit fields in the Smart Mapper UI | +| Row missing required field | Marked FAILED in report; rest of batch continues | +| Font substitution on Linux | Fonts volume mounted in Gotenberg Docker container | +| Google Sheets rate limit | Exponential backoff: 1s → 2s → 4s on 429 errors | +| Malicious DOCX (XXE) | XML parser configured to disable external entity resolution | From ff50127897d7e8c58862981e057acaa515ea1510 Mon Sep 17 00:00:00 2001 From: 0xnithin1 Date: Fri, 20 Feb 2026 21:11:51 +0530 Subject: [PATCH 12/13] updated solutions --- Solution_2_LinkedIn.md | 8 - Solution_3_Doc_Template.md | 10 - Solution_4_Character_Video.md | 369 ++++++++++++++++++++++++++- Video-to-Notes Solution Proposal.pdf | Bin 300234 -> 0 bytes 4 files changed, 368 insertions(+), 19 deletions(-) delete mode 100644 Video-to-Notes Solution Proposal.pdf diff --git a/Solution_2_LinkedIn.md b/Solution_2_LinkedIn.md index f83e78b1..6e890a93 100644 --- a/Solution_2_LinkedIn.md +++ b/Solution_2_LinkedIn.md @@ -232,11 +232,3 @@ response = client.generate_content( | Line breaks broken | Literal newline in JSON | Enforce `\n` rule in prompt + post-process: `content.replace('\n', '\\n')` | --- - -## Appendix: Persona Presets - -| Persona Type | Tone | Formatting | Focus | -|---|---|---|---| -| Modern Founder | Vulnerable, Ambitious | No emojis, lowercase | Building in public, lessons learned | -| Technical Expert | Precise, Analytical | Bullets, clear headers | How-to guides, tool reviews | -| Industry Disrupter | Bold, Visionary | One-line paragraphs | Challenging norms, future trends | diff --git a/Solution_3_Doc_Template.md b/Solution_3_Doc_Template.md index 2f12487b..647ca0d8 100644 --- a/Solution_3_Doc_Template.md +++ b/Solution_3_Doc_Template.md @@ -200,13 +200,3 @@ Output: John-Doe_OfferLetter_2024-03-15.pdf --- -## Error Handling Summary - -| Failure | Handling | -|---|---| -| Split XML runs | Pre-processing step merges fragmented runs before GenAI scan | -| GenAI misses a field | User can manually add/edit fields in the Smart Mapper UI | -| Row missing required field | Marked FAILED in report; rest of batch continues | -| Font substitution on Linux | Fonts volume mounted in Gotenberg Docker container | -| Google Sheets rate limit | Exponential backoff: 1s → 2s → 4s on 429 errors | -| Malicious DOCX (XXE) | XML parser configured to disable external entity resolution | diff --git a/Solution_4_Character_Video.md b/Solution_4_Character_Video.md index a25f422c..d5021cb3 100644 --- a/Solution_4_Character_Video.md +++ b/Solution_4_Character_Video.md @@ -1,6 +1,373 @@ -# Architecture: Character-Based Video Series Generator +# Architecture: Character-Based Video Series Generator (5-Min Episodes) > **Real-World Reference Implementation:** > This architecture is based on **[LoraFrame (IDLock Engine)](https://github.com/Nithin9585/LoraFrame_)** — a project I built and presented at the **CENI AI Hackathon, Hyderabad** (Top 10 Finalist). > LoraFrame is a persistent character memory & video generation system that combines episodic memory, LLM reasoning, and identity-preservation technology to create "permanent digital actors" that maintain visual consistency across generated images and videos. > *(Note: This is my personal GitHub account — [Nithin9585](https://github.com/Nithin9585))* + +--- + +## The Problem + +We need to generate a **5-minute episode video** using AI-generated characters, but **no current AI video model can produce 5 minutes in one shot**. State-of-the-art models (Veo 3.1, Runway Gen-4, Kling 3.0) cap out at **5–15 seconds per clip**. The core challenge is: + +1. **Generate many short clips** that are individually high-quality +2. **Maintain character identity** (face, clothing, style) across all clips +3. **Assemble clips** into a coherent 5-minute narrative with transitions, audio, and pacing +4. **Remember character history** across episodes so a series feels continuous + +This proposal describes a system that solves all four problems. + +--- + +## System Architecture (Core Engine) + +The following diagram shows the **LoraFrame IDLock Engine** — the core system that powers character creation, identity-locked generation, memory, and self-healing refinement. + +```mermaid +graph TD + + %% ===== CLIENT LAYER ===== + U["User / Client App"] --> API["API Gateway (FastAPI)"] + + %% ===== JOB QUEUE ===== + API --> Q["Redis Queue (RQ)"] + + %% ===== WORKERS ===== + Q --> GEN["Generator Worker"] + Q --> REF["Refiner Worker"] + Q --> STA["State Analyzer Worker"] + Q --> COL["LoRA Collector Worker"] + Q --> TRN["LoRA Trainer Worker"] + + %% ===== DATA LAYER ===== + PG["Postgres Metadata DB"] + VDB["Vector DB (Embeddings)"] + OBJ["Object Storage (Images / Models)"] + + %% ===== MEMORY ===== + GEN --> PG + GEN --> VDB + STA --> PG + STA --> VDB + + %% ===== PROMPT ENGINE ===== + GEN --> LLM["LLM Prompt Engine"] + + %% ===== LORA SYSTEM ===== + GEN --> LR["LoRA Registry"] + LR --> GEN + COL --> TRN + TRN --> OBJ + TRN --> LR + LR --> PG + + %% ===== GENERATION ===== + GEN --> AI["Image / Video Generator"] + AI --> OBJ + + %% ===== VALIDATION ===== + AI --> VAL["Vision Validator (IDR)"] + VAL -->|Pass| STA + VAL -->|Fail| REF + + %% ===== REFINEMENT LOOP ===== + REF --> AI + + %% ===== LORA DATA PIPELINE ===== + STA --> COL + + %% ===== ADMIN UI ===== + API --> UI["Admin / Dashboard"] +``` + +### Component Breakdown + +| Component | Technology | Role | +|---|---|---| +| **API Gateway** | FastAPI (Python) | REST API for character creation, episode requests, job status | +| **Redis Queue** | Redis / RQ | Async job dispatch to workers; decouples API from heavy GPU tasks | +| **Generator Worker** | Veo 3.1 / Imagen 3 / Kling 3.0 | Produces identity-locked images/video clips per scene | +| **Refiner Worker** | InsightFace + Inpainting | Self-healing loop — if IDR detects identity drift, re-generates the face region | +| **State Analyzer** | LLM + Vector DB | Updates episodic memory after each generation (injuries, costume changes, mood) | +| **LoRA Collector/Trainer** | SDXL LoRA training pipeline | Collects validated images → fine-tunes a character-specific LoRA adapter | +| **LLM Prompt Engine** | Groq (Llama 3 70B) | Converts simple user prompts into rich, context-aware scene descriptions | +| **Vision Validator (IDR)** | InsightFace + ONNX Runtime | Compares generated face embeddings against canonical reference — reject if similarity < threshold | +| **LoRA Registry** | Postgres + Object Storage | Tracks which LoRA weights belong to which character; version-controlled | +| **Postgres** | PostgreSQL (SQLAlchemy) | Stores character metadata, episode scripts, scene timelines, generation logs | +| **Vector DB** | Pinecone / FAISS | Stores episodic memory embeddings for RAG-based character state retrieval | +| **Object Storage** | GCS / S3 | Stores generated images, video clips, LoRA model weights | + +--- + +## Long Video Assembly Pipeline (5-Minute Episodes) + +Since no single AI model can generate 5 minutes of video at once, we use a **Scene-by-Scene Generation + Assembly** pipeline. This is the key architectural addition that turns short AI clips into a full episode. + +```mermaid +graph TD + subgraph "Phase 1: Script & Storyboard" + EP["Episode Prompt (user story)"] --> SCRIPT["LLM Script Engine"] + BIBLE["Series Bible (characters, relationships)"] --> SCRIPT + MEM["Episodic Memory (Vector DB)"] --> SCRIPT + SCRIPT --> SCENES["Scene Breakdown JSON"] + SCENES --> |"12-18 scenes × 15-25s each"| SB["Storyboard Plan"] + end + + subgraph "Phase 2: Scene-by-Scene Generation" + SB --> LOOP["Scene Generation Loop"] + LOOP --> |"For each scene"| IDGEN["IDLock Generator (Core Engine)"] + IDGEN --> |"5-8s clip"| EXTEND["Scene Extension (last-frame chaining)"] + EXTEND --> |"15-25s clip"| VALID["IDR Validation"] + VALID --> |Pass| CLIP["Validated Scene Clip"] + VALID --> |Fail| REFINE["Refiner → Re-generate"] + REFINE --> IDGEN + end + + subgraph "Phase 3: Audio Pipeline" + SCENES --> TTS["TTS Engine (per character voice)"] + SCENES --> MUSIC["Background Music / SFX Selection"] + TTS --> AUDIO["Scene Audio Tracks"] + MUSIC --> AUDIO + end + + subgraph "Phase 4: Assembly & Post-Production" + CLIP --> ASSEMBLE["FFmpeg Video Assembler"] + AUDIO --> ASSEMBLE + ASSEMBLE --> TRANS["Transition Engine (cross-fade, cuts)"] + TRANS --> FINAL["Final 5-Min Episode MP4"] + FINAL --> QC["Quality Check (duration, lip-sync, continuity)"] + QC --> |Pass| DELIVER["Deliver to User"] + QC --> |Fail| RETRY["Flag scenes for regeneration"] + RETRY --> LOOP + end +``` + +### How the Long Video Pipeline Works + +#### Phase 1: Script & Storyboard Generation + +The user submits a **short episode prompt** (e.g., *"Ava discovers the secret lab; her mentor warns her about the consequences"*). The LLM Script Engine: + +1. **Loads the Series Bible** — character profiles, relationship maps, visual rules +2. **Retrieves episodic memory** via RAG — what happened in previous episodes (Vector DB) +3. **Generates a structured scene breakdown** — typically **12–18 scenes**, each 15–25 seconds long, totaling ~5 minutes + +Example Scene Breakdown JSON: +```json +{ + "episode": { + "title": "The Hidden Lab", + "total_target_duration_sec": 300, + "scenes": [ + { + "scene_id": "sc_001", + "description": "Establishing shot — Ava walks toward the abandoned building at dusk", + "characters": ["ava"], + "duration_sec": 20, + "camera": "wide tracking shot, golden hour lighting", + "dialogue": null, + "narration": "Ava had always been curious. But tonight, curiosity felt dangerous.", + "mood": "tense, mysterious" + }, + { + "scene_id": "sc_002", + "description": "Close-up — Ava pushes open the heavy metal door, revealing blue lab lighting inside", + "characters": ["ava"], + "duration_sec": 15, + "camera": "close-up face, rack focus to door interior", + "dialogue": null, + "narration": null, + "mood": "suspenseful" + } + ] + } +} +``` + +#### Phase 2: Scene-by-Scene Generation with Last-Frame Chaining + +This is the critical technique for producing **long, continuous video from short AI clips**: + +1. **Generate an initial 5–8 second clip** for each scene using the IDLock Generator (Veo 3.1 / Kling 3.0 API) +2. **Extract the last frame** of the generated clip +3. **Feed the last frame as a reference image** to the next generation call → this is **"Scene Extension" / "Last-Frame Chaining"** +4. **Repeat 2–3 times** per scene to extend each scene to 15–25 seconds +5. **IDR Validation** checks every clip — if the character's face drifts beyond the similarity threshold, the Refiner re-generates that clip + +This approach is inspired by how **Veo 3.1's SceneBuilder** and **Kling 3.0's multi-shot generation** work: + +| Technique | Source | Used For | +|---|---|---| +| **Last-Frame Chaining** | Veo 3.1 Scene Extension API | Extend a scene from 8s → 20s while maintaining visual continuity | +| **Multi-Shot Generation** | Kling 3.0 MVL Architecture | Generate 2–6 distinct scenes with character consistency in a single session | +| **Element Reference** | Kling 3.0 Character Reference 3.0 | Lock character identity across all shots using reference images | +| **IDR Self-Healing** | LoraFrame (InsightFace) | If face similarity drops below 0.85, regenerate that specific clip | + +#### Phase 3: Audio Pipeline (Parallel) + +While video is being generated, the audio pipeline runs in parallel: + +- **TTS Engine** (ElevenLabs / Coqui XTTS) generates character-specific voice lines from the script +- **Music Selection** picks background tracks matching mood tags (tense, joyful, dramatic) +- **SFX Engine** adds ambient sounds (footsteps, door creaks, wind) + +Each character has a **fixed voice profile** stored in the Series Bible — ensuring the same voice across episodes. + +#### Phase 4: Assembly & Post-Production + +``` +FFmpeg Assembly Pipeline: +1. Concatenate scene clips in order → raw_video.mp4 +2. Add cross-fade transitions (0.5s) → smooth_video.mp4 +3. Mix dialogue audio with music/SFX → mixed_audio.aac +4. Merge video + audio → episode_final.mp4 +5. Validate total duration ≈ 300 seconds → QC pass/fail +``` + +If QC fails (e.g., total duration is 247s instead of 300s), the system flags the shortest scenes and regenerates them with longer durations. + +--- + +## Key System: Identity Persistence (IDLock) + +The biggest challenge in AI video series is **keeping the same character looking the same** across hundreds of generated clips. LoraFrame solves this with a multi-layer identity system: + +``` +┌─────────────────────────────────────────────────────┐ +│ IDLock Stack │ +├─────────────────────────────────────────────────────┤ +│ Layer 1: Reference Images (canonical face + angles) │ +│ Layer 2: InsightFace Embeddings (512-d face vector) │ +│ Layer 3: LoRA Weights (fine-tuned on character) │ +│ Layer 4: Style Anchors (clothing, palette, props) │ +│ Layer 5: Episodic Memory (RAG — what happened) │ +└─────────────────────────────────────────────────────┘ + +Generation Flow: +User Prompt → LLM enriches with memory + style anchors + → Generator uses reference images + LoRA weights + → Output validated by InsightFace (cosine similarity ≥ 0.85) + → PASS: save to memory | FAIL: refine and retry (max 3 loops) +``` + +--- + +## Episodic Memory: How Characters "Remember" + +Each generation event creates a **memory record** stored in the Vector DB: + +```json +{ + "character_id": "char_ava_001", + "episode": 3, + "scene": "sc_007", + "state": { + "clothing": "torn lab coat, no glasses", + "injuries": "bandaged left hand", + "mood": "determined but shaken", + "location": "underground lab corridor" + }, + "embedding": [0.012, -0.445, 0.893, ...] +} +``` + +Before generating a new scene, the **LLM Prompt Engine** runs a RAG query: +- *"What was Ava wearing in the most recent scene?"* +- Vector DB returns the latest state → LLM includes `"torn lab coat, bandaged left hand"` in the generation prompt +- This ensures **visual continuity within and across episodes** + +--- + +## Technology Stack + +### Backend (LoraFrame Engine) +| Layer | Technology | +|---|---| +| Framework | Python 3.10+, FastAPI | +| Database | PostgreSQL (SQLAlchemy) | +| Cache / Queue | Redis (RQ workers) | +| Vector DB | Pinecone / FAISS | +| LLM Inference | Groq (Llama 3 70B/8B) | +| Image/Video Gen | Google Veo 3.1, Imagen 3, Kling 3.0 (multi-provider) | +| Identity Lock | InsightFace, ONNX Runtime | +| LoRA Training | SDXL LoRA fine-tuning pipeline | +| Storage | Google Cloud Storage (GCS) / AWS S3 | + +### Long Video Assembly Layer +| Component | Technology | +|---|---| +| Scene Extension | Veo 3.1 Scene Extension API (last-frame chaining) | +| Multi-Shot | Kling 3.0 Multi-Shot Generation | +| TTS | ElevenLabs API / Coqui XTTS (self-hosted) | +| Music/SFX | Mubert API / local library | +| Video Assembly | FFmpeg (concat, transitions, audio merge) | +| Quality Control | Duration validator + lip-sync checker | + +### Frontend +| Layer | Technology | +|---|---| +| Framework | React.js | +| Language | JavaScript | + +--- + +## Project Structure (LoraFrame Backend) + +``` +cineAI/ +├── app/ +│ ├── api/ # API Routes (characters, generate, video, episodes) +│ ├── core/ # Config, Database, Redis setup +│ ├── models/ # SQLAlchemy Database Models +│ ├── schemas/ # Pydantic Request/Response Models +│ ├── services/ # Core Logic (Groq, Gemini, MemoryEngine) +│ └── workers/ # Async Task Workers (generator, refiner, trainer, assembler) +├── assembly/ +│ ├── script_engine/ # LLM-based scene breakdown generator +│ ├── chainer/ # Last-frame chaining / scene extension logic +│ ├── audio/ # TTS, music selection, SFX mixing +│ └── ffmpeg_ops/ # FFmpeg concat, transitions, final render +├── scripts/ # Utility scripts +├── tests/ # Pytest suite +├── uploads/ # Local storage for dev +├── .env.example # Environment variable template +├── requirements.txt # Python dependencies +└── README.md +``` + +--- + +## API Endpoints + +| Method | Endpoint | Description | +|---|---|---| +| `POST` | `/api/v1/characters` | Create a new character from reference images | +| `POST` | `/api/v1/generate` | Generate a consistent image for a character | +| `POST` | `/api/v1/video/generate` | Generate a single video scene (short clip) | +| `POST` | `/api/v1/episodes/create` | Create a full 5-min episode from a story prompt | +| `GET` | `/api/v1/episodes/{episode_id}/status` | Poll episode assembly progress | +| `GET` | `/api/v1/episodes/{episode_id}/download` | Download the final episode MP4 + assets | +| `GET` | `/api/v1/jobs/{job_id}` | Check individual generation job status | + +--- + +## Live Deployment + +| Component | URL | +|---|---| +| **Frontend (Live App)** | [https://lore-frame-in.vercel.app](https://lore-frame-in.vercel.app) | +| **Backend API (GCP)** | [https://cineai-api-4sjsy6xola-uc.a.run.app/docs](https://cineai-api-4sjsy6xola-uc.a.run.app/docs) | + +--- + +## Why This Architecture Works for 5-Minute Videos + +| Challenge | Solution | +|---|---| +| AI models only generate 5–15s clips | **Scene-by-scene generation** with last-frame chaining extends each to 15–25s; 15 scenes = 5 min | +| Character faces change between clips | **IDLock (InsightFace + LoRA)** validates every frame; self-healing refiner fixes drift | +| Stories lack continuity across episodes | **Episodic Memory (RAG + Vector DB)** ensures characters "remember" past events and state | +| Audio doesn't match video | **Parallel audio pipeline** with per-character voice profiles + mood-tagged music | +| Quality varies across scenes | **Vision Validator + QC pipeline** — reject and regenerate below-threshold clips | +| No single tool does everything | **Modular, multi-provider architecture** — swap Veo for Kling or Runway per scene as needed | diff --git a/Video-to-Notes Solution Proposal.pdf b/Video-to-Notes Solution Proposal.pdf deleted file mode 100644 index 1809dd3f50b5a3498111b21261d385196662351e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300234 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 Date: Fri, 20 Feb 2026 21:44:51 +0530 Subject: [PATCH 13/13] Add author identity note with Nithin9585 GitHub profile link to GenAI.md --- GenAI.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/GenAI.md b/GenAI.md index 0070069e..c7e10cf9 100644 --- a/GenAI.md +++ b/GenAI.md @@ -1,3 +1,16 @@ +
      + +### 👤 Submitted by: **Nithin N** + +> ⚠️ **Note:** My primary GitHub account is **[Nithin9585](https://github.com/Nithin9585)** — due to login issues, this submission is made from a secondary account. +> To verify my profile, projects, and work history, please visit: +> +> ## 🔗 [github.com/Nithin9585](https://github.com/Nithin9585) + +
      + +--- + # GenAI Assignment: **Evaluation Criteria**

    ^WN)h{-DgJp?#ui^KW*H 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�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