import { tavily } from "@tavily/core"; import { writeFileSync, mkdirSync } from "fs"; import { join } from "path"; const OUTPUT_DIR = join( import.meta.dirname, "..", "outputs", "task_management_feature_launch_20260323" ); const queries = [ "home maintenance app download conversion strategies app store optimization 2026", "homeowner forgot maintenance costly repair stories real examples", "mobile app Instagram Reels ad creative best practices high CTR 2026", "TikTok home improvement property management app ads that convert", "millennial first time homeowner maintenance anxiety solutions apps", ]; async function runResearch() { const client = tavily({ apiKey: process.env.TAVILY_API_KEY }); const results = []; for (const query of queries) { console.log(`Researching: "${query}"`); try { const response = await client.search(query, { searchDepth: "advanced", maxResults: 10, }); results.push({ query, timestamp: new Date().toISOString(), resultCount: response.results.length, results: response.results.map((r) => ({ title: r.title, url: r.url, content: r.content, score: r.score, })), }); console.log(` → ${response.results.length} results`); } catch (err) { console.error(` ✗ Error for "${query}": ${err.message}`); results.push({ query, timestamp: new Date().toISOString(), resultCount: 0, results: [], error: err.message, }); } } const output = { generatedAt: new Date().toISOString(), agent: "marketing-research", campaign: "task_management_feature_launch", queryCount: queries.length, queries, results, }; mkdirSync(OUTPUT_DIR, { recursive: true }); const outPath = join(OUTPUT_DIR, "research_results.json"); writeFileSync(outPath, JSON.stringify(output, null, 2)); console.log(`\nSaved: ${outPath}`); } runResearch();