"""Generate the AgroSense Instagram Launch Campaign as Word (.docx) and PDF. pip install python-docx fpdf2 python scripts/build_campaign.py Content is ASCII so the PDF renders with built-in core fonts. """ from __future__ import annotations import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent)) from docgen import build_both # noqa: E402 DOCS_DIR = Path(__file__).resolve().parent.parent / "docs" TITLE = "AgroSense - Instagram Launch Campaign" SUBTITLE = "Content, reel scripts, voiceover and audio direction - 2-week launch sprint" SECTIONS = [ ("1. Campaign Overview", [ ("ul", ["Campaign name: #GrowWithAgroSense ('Smart farming, local wisdom').", "Goal: awareness + sign-ups (farmers, FPOs/cooperatives, agri-doctors).", "Audience: smallholder farmers, FPOs, agri-experts, agri-students, " "agri-input partners (India-first; multilingual).", "Duration: 14-day launch sprint, then 3-4 posts/week ongoing.", "Primary CTA: 'Try free at the link in bio.' Secondary: 'Are you an " "agri-expert? Apply to become a verified Plant Doctor.'", "KPIs: reach, saves, shares, profile visits, link clicks, reel plays, " "sign-ups, doctor applications.", "Tone: empowering, practical, trustworthy, hopeful, local.", "Look: green/earth palette, the sprout (leaf) logo, real farm footage, " "clean data overlays, large readable captions."]), ]), ("2. Content Pillars", [ ("ol", ["Empathy - real farmer pain points (wrong inputs, pests, price shocks).", "Features - advisor, weather/satellite, plant clinic + live doctor, " "prices & farmer trading, clubs, traditional/Panchang advisor, finance " "(loans + schemes), land records, multilingual.", "Education - quick, useful agronomy tips ('Did you know').", "Proof and impact - outcomes, numbers, testimonials.", "Community and CTA - sign up, refer, become a verified plant doctor."]), ]), ("3. Two-Week Content Calendar", [ ("ul", ["Day 1 (Reel): Launch - 'Meet AgroSense'. CTA: link in bio.", "Day 2 (Carousel): '5 ways AgroSense helps your farm'.", "Day 3 (Story): Poll - 'Biggest farm worry? Pests / Weather / Prices'.", "Day 4 (Reel): 'Snap a sick leaf -> get a prescription' (Plant clinic).", "Day 5 (Single post): Weather + satellite advisory screenshot + tip.", "Day 6 (Carousel): 'Ask in your language' (multilingual demo).", "Day 7 (Reel): 'Talk to a real plant doctor' (live consult).", "Day 8 (Story): Quiz - 'Which fertilizer for sandy-soil maize?'.", "Day 9 (Single post): Live mandi prices + commodities, 'Sell smarter'.", "Day 10 (Reel): 'From question to cited answer in 1 second' (advisor).", "Day 11 (Carousel): 'For agri-experts: become a verified Plant Doctor'.", "Day 12 (Story): Behind the scenes / founder note + countdown.", "Day 13 (Single post): Impact stats (yield +15%, fertilizer -20%).", "Day 14 (Reel): Recap + strong CTA + testimonial clip."]), ]), ("4. Reel 1 - 'Meet AgroSense' (30s, launch)", [ ("p", "Format: 9:16 vertical. Pace: fast cuts, captions burned-in. Hook in 2s."), ("ul", ["0-3s | Worried farmer looking at a spotted leaf | Text: 'Wrong advice " "costs your crop.' | VO: 'Every season, a wrong guess costs the harvest.'", "3-8s | Phone shows the AgroSense app/chat | Text: 'Ask anything.' | VO: " "'AgroSense gives evidence-backed answers - with sources you can trust.'", "8-14s | Quick montage: weather, satellite map, leaf scan, price ticker | " "Text: 'Weather - Satellite - Plant clinic - Prices' | VO: 'Local weather, " "satellite view, plant diagnosis, and live market prices.'", "14-20s | Chat answer in Hindi/Kannada | Text: 'In your language.' | VO: " "'Ask in your own language.'", "20-26s | Video call with a 'Plant Doctor' | Text: 'Talk to a real " "expert.' | VO: 'And when you need a human, consult a verified plant " "doctor - live.'", "26-30s | Logo + CTA card | Text: 'Try free. Link in bio.' | VO: " "'AgroSense. Smart farming, local wisdom.'"]), ("p", "Audio: upbeat, hopeful acoustic/folk-fusion bed (90-110 BPM); soft " "whoosh on each cut; VO ducks the music by ~8 dB."), ]), ("5. Reel 2 - 'Snap a sick leaf' (20s, Plant clinic)", [ ("ul", ["0-3s | Close-up: yellowing/spotted tomato leaf | Text: 'Sick crop?' | " "VO: 'Not sure what is wrong with your crop?'", "3-9s | Farmer photographs the leaf in the app | Text: 'Just take a " "photo.' | VO: 'Just snap a photo.'", "9-15s | Screen: diagnosis + prescription card appears | Text: 'Get a " "diagnosis + treatment.' | VO: 'Get a likely diagnosis and a step-by-step " "treatment - with safe dosages.'", "15-20s | Healthy field + logo | Text: 'AgroSense Plant Clinic. Link in " "bio.' | VO: 'Heal your crop early. AgroSense.'"]), ("p", "Audio: light curiosity motif, camera-shutter SFX at 6s, positive resolve " "chord at 15s. Disclaimer caption: 'Decision support, not a substitute for " "an expert.'"), ]), ("6. Reel 3 - 'Talk to a real plant doctor' (25s)", [ ("ul", ["0-3s | Farmer with a tough problem | Text: 'Need a real expert?' | VO: " "'Some problems need a human expert.'", "3-9s | App: choose specialization/language, tap Request | Text: 'Request " "a live consult.' | VO: 'Request a live consultation in seconds.'", "9-16s | Routed to a verified doctor; star rating + ICAR reg shown | " "Text: 'Matched to a VERIFIED doctor.' | VO: 'You are matched to a " "verified plant doctor - ratings and registration shown.'", "16-22s | Video call + chat | Text: 'Video + chat. Your language.' | VO: " "'Talk by video or chat, in your language.'", "22-25s | Logo + CTA | Text: 'AgroSense. Link in bio.' | VO: 'Expert help, " "wherever you farm.'"]), ("p", "Audio: warm, reassuring piano/strings bed; gentle notification chime when " "matched (14s)."), ]), ("7. Carousel Posts (copy)", [ ("h2", "Carousel A - '5 ways AgroSense helps your farm'"), ("ol", ["Cited crop, fertilizer and pest advice - no more guesswork.", "Local weather + satellite view to time irrigation and spraying.", "Snap-a-leaf plant clinic: diagnosis + treatment.", "Live mandi prices - sell at the right place and time.", "Ask in your language; consult a verified plant doctor."]), ("h2", "Carousel B - 'Become a verified Plant Doctor'"), ("ol", ["Reach farmers who need your expertise.", "Get verified (credentials + ICAR/registration number).", "Take live video/chat consults; build your rating and reviews.", "Apply in the app - Plant clinic tab -> 'Apply as a plant doctor'."]), ]), ("8. Sample Captions", [ ("p", "Launch (Reel 1): One wrong input can cost a whole season. AgroSense puts " "evidence-backed, cited farming advice in your pocket - plus weather, " "satellite, plant diagnosis, live prices, and verified plant doctors. In " "your language. Try it free - link in bio. #GrowWithAgroSense"), ("p", "Plant clinic (Reel 2): Spotted leaves? Do not guess. Snap a photo and get " "a likely diagnosis with a safe, step-by-step treatment. Catch problems " "early, protect your yield. Link in bio. (Decision support, not a " "substitute for an expert.)"), ("p", "Plant doctor (Reel 3): When you need a human, AgroSense connects you to a " "VERIFIED plant doctor - by video or chat, in your language, with ratings " "you can see. Real expertise, wherever you farm. Link in bio."), ("p", "Experts: Are you an agronomist, pathologist or entomologist? Get verified " "on AgroSense and help farmers across India. Apply in the app today."), ]), ("9. Stories and Interactive", [ ("ul", ["Poll: 'Biggest worry this season? Pests / Weather / Prices'.", "Quiz: 'Which fertilizer for sandy-soil maize?' (reveal the cited answer).", "Slider: 'How confident are you about pest control?'.", "Countdown sticker to launch / a live Q&A.", "'Ask me anything' box -> answer using AgroSense on screen.", "Behind-the-scenes: how answers are grounded and cited.", "Repost user results/testimonials; add captions and the link sticker."]), ]), ("10. Voiceover Scripts (Audio)", [ ("h2", "Master VO - 30s launch (English)"), ("p", "'Every season, a wrong guess costs the harvest. AgroSense gives " "evidence-backed answers - with sources you can trust. Local weather, " "satellite view, plant diagnosis, and live market prices. Ask in your own " "language. And when you need a human, consult a verified plant doctor, " "live. AgroSense - smart farming, local wisdom. Try it free.'"), ("h2", "Localization"), ("p", "Record the same VO in Hindi, Kannada, Telugu, Tamil, Marathi, Bengali and " "Malayalam. Keep sentences short; match the on-screen captions. Use a warm, " "trusted regional voice (ideally a real farmer/agronomist for authenticity). " "Always burn in subtitles - most feed views are muted."), ("h2", "Tagline (all reels)"), ("p", "'AgroSense - smart farming, local wisdom.'"), ]), ("11. Audio and Music Direction", [ ("ul", ["Bed: upbeat acoustic / folk-fusion, 90-110 BPM, hopeful and warm; use " "Instagram-licensed/trending audio where possible for reach, plus a " "royalty-free original for ads.", "Doctor/telemedicine reels: softer piano/strings for trust.", "SFX: subtle whoosh on cuts, camera shutter on photo capture, gentle " "chime on 'doctor matched'.", "Mix: duck music under VO by 6-8 dB; normalize to about -14 LUFS; keep " "peaks below -1 dBFS.", "Accessibility: always include burned-in captions/subtitles."]), ]), ("12. Hashtag Sets", [ ("p", "Core: #GrowWithAgroSense #AgroSense #SmartFarming #DigitalAgriculture " "#AgriTech #FarmingAdvisor"), ("p", "Reach (India): #KisanTech #Kheti #IndianAgriculture #AgriIndia #FarmerFirst " "#CropCare #PlantDoctor #SustainableFarming #AIforAgriculture #FarmSmart"), ("p", "Use 8-12 relevant tags per post; mix high- and niche-volume; rotate to " "avoid repetition; add 1-2 regional/language tags per localized post."), ]), ("13. Profile and Link-in-bio", [ ("ul", ["Handle: @agrosense (or @agrosense.app).", "Bio: 'AI farming advisor | Cited crop, weather & market advice | Plant " "clinic + verified doctors | In your language | Try free ->'.", "Link-in-bio: app/sign-up, 'Become a plant doctor', and the user manual.", "Highlights: How it works, Plant clinic, Live doctor, Prices & Trading, " "Clubs, Traditional, Finance, Land records, Languages, FAQs."]), ]), ("14. Production Notes and Tools", [ ("p", "These are production-ready scripts. To produce the actual media:"), ("ul", ["Video editing: CapCut, InShot, Canva, or Premiere/After Effects for " "motion graphics. Shoot real farm B-roll; screen-record the app.", "Voiceover: record a real regional voice, or use a quality TTS (e.g. " "ElevenLabs/Murf) then human-review for pronunciation.", "Music: Instagram's in-app licensed audio for organic reach; royalty-free " "libraries (e.g. Epidemic, Artlist) for ads.", "Captions: auto-caption then proofread; keep text in the safe zone.", "Specs: 1080x1920, 9:16, MP4 (H.264), 30 fps, under 60s for reels.", "Compliance: keep the 'decision support, not a substitute for an expert' " "line on medical/treatment content; avoid guaranteeing yields."]), ]), ("15. Measurement", [ ("ul", ["Track per post: reach, plays, average watch time, saves, shares, " "profile visits, link clicks.", "Track funnel: link clicks -> sign-ups -> active users; doctor applications.", "Double down on the top 2 reels (boost as ads to look-alike audiences).", "Review weekly; iterate hooks (first 2 seconds) and CTAs."]), ]), ] def main() -> int: build_both(TITLE, SUBTITLE, SECTIONS, DOCS_DIR, "AgroSense_Instagram_Campaign") return 0 if __name__ == "__main__": raise SystemExit(main())