{"id":"b3bb740f-3148-44e0-b69a-b7053901cd09","shortId":"LHRmkW","kind":"skill","title":"meeting-brief-generator","tagline":"Takes a company name and optional contact, runs targeted research via Tavily, synthesizes a 1-page pre-call brief with Gemini, and optionally saves it to Notion. Use when asked to prepare for a meeting, research a prospect before a call, generate a company brief, create a pre-cal","description":"# Meeting Brief Generator\n\nTake a company name and optional contact. Research the company via Tavily. Synthesize a 1-page pre-call brief with Gemini. Optionally save to Notion.\n\n---\n\n**Critical rule:** DO NOT INVENT SPECIFICS. Every fact, number, and claim in the brief must come from a Tavily search result. Mark any section with no search data as \"Limited public information found.\" Never fabricate funding amounts, employee counts, or product details.\n\n---\n\n## Step 1: Setup Check\n\nConfirm required env vars:\n\n```bash\necho \"TAVILY_API_KEY: ${TAVILY_API_KEY:+set}\"\necho \"GEMINI_API_KEY: ${GEMINI_API_KEY:+set}\"\necho \"NOTION_TOKEN: ${NOTION_TOKEN:-not set}\"\necho \"NOTION_DATABASE_ID: ${NOTION_DATABASE_ID:-not set}\"\n```\n\n**If TAVILY_API_KEY is missing:**\nStop. Tell the user: \"TAVILY_API_KEY is required. Get it at app.tavily.com. Add it to your .env file.\"\n\n**If GEMINI_API_KEY is missing:**\nStop. Tell the user: \"GEMINI_API_KEY is required. Get it at aistudio.google.com. Add it to your .env file.\"\n\n**If NOTION_TOKEN or NOTION_DATABASE_ID is missing:**\nContinue. The brief will be output as text only. Notion saving is skipped.\n\n**Confirm input is present.**\nThe user must provide at minimum a company name. If not provided, ask: \"Which company are you meeting with?\"\n\n---\n\n## Step 2: Gather Context\n\nCollect the following. Ask only for what is missing.\n\nRequired:\n- Company name (or domain/URL if provided)\n- Meeting date\n\nOptional (do not block if missing):\n- Contact name and title\n- Meeting type (discovery, demo, follow-up, QBR)\n- Any specific topics or goals the user wants to cover\n\nIf the user provides a company URL or domain, use it to make Tavily queries more precise (e.g. `site:example.com` or include the domain in search terms).\n\n---\n\n## Step 3: Research with Tavily\n\nRun these searches in sequence. Each targets one section of the brief. Save the top results from each (title, url, content snippet, score).\n\nKeep results with score >= 0.5. If a search returns 0 qualifying results, mark that section as \"Limited public information found.\"\n\n**Search 1: Company overview**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"COMPANY\\\" overview founded employees headquarters\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true\n  }'\n```\n\n**Search 2: Recent news (last 30 days)**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"COMPANY\\\" news announcement\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true,\n    \"topic\": \"news\",\n    \"time_range\": \"month\"\n  }'\n```\n\n**Search 3: Tech stack**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"COMPANY\\\" technology stack engineering infrastructure tools\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true\n  }'\n```\n\n**Search 4: Product and pricing**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"COMPANY\\\" product features pricing use case\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true\n  }'\n```\n\n**Search 5: Competitors**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"COMPANY\\\" competitors alternatives vs\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true\n  }'\n```\n\n**Search 6: Funding and growth**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"COMPANY\\\" funding raised valuation growth\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true\n  }'\n```\n\n**If contact name is provided, run two more searches:**\n\n**Search 7: Contact profile**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"CONTACT_NAME\\\" \\\"COMPANY\\\" role title\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true\n  }'\n```\n\n**Search 8: Contact background**\n```bash\ncurl -s -X POST \"https://api.tavily.com/search\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"api_key\": \"'\"$TAVILY_API_KEY\"'\",\n    \"query\": \"\\\"CONTACT_NAME\\\" background career LinkedIn\",\n    \"search_depth\": \"advanced\",\n    \"max_results\": 5,\n    \"include_answer\": true\n  }'\n```\n\n---\n\n## Step 4: Synthesize with Gemini\n\nRead `references/brief-format.md` in full. Read `references/output-template.md` and use the template.\n\nWrite the Gemini request to a temp file:\n\n```bash\ncat > /tmp/meeting-brief-request.json << 'ENDJSON'\n{\n  \"system_instruction\": {\n    \"parts\": [{\n      \"text\": \"You are a GTM research analyst preparing a 1-page pre-call brief for a sales or business development meeting. Rules: Every claim must cite a source URL from the provided research. Use the format 'Because [finding from research], mention [point] to [goal]' for talking points. No invented data. If a section has no research data, write 'Limited public information found.' No em dashes. No banned words. Under 400 words total. The brief must be scannable in 3 minutes.\"\n    }]\n  },\n  \"contents\": [{\n    \"parts\": [{\n      \"text\": \"RESEARCH_RESULTS_AND_INSTRUCTIONS_HERE\"\n    }]\n  }],\n  \"generationConfig\": {\n    \"temperature\": 0.3,\n    \"maxOutputTokens\": 2500\n  }\n}\nENDJSON\ncurl -s -X POST \\\n  \"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d @/tmp/meeting-brief-request.json \\\n  | python3 -c \"import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])\"\n```\n\nReplace `RESEARCH_RESULTS_AND_INSTRUCTIONS_HERE` with:\n- All Tavily search results (title, url, content snippet per result)\n- The brief template structure from output-template.md\n- The company name, contact name (if provided), meeting date, meeting type (if provided)\n\n---\n\n## Step 5: Self-QA\n\nCheck before presenting:\n\n- [ ] No invented data. Every fact has a source URL from Tavily results.\n- [ ] Talking points use \"Because [finding], mention [point] to [goal]\" format\n- [ ] No em dashes in any line\n- [ ] No banned words\n- [ ] Brief is under 400 words\n- [ ] Decision Maker section says \"Not specified\" if no contact was provided\n- [ ] Sections with no data say \"Limited public information found\" rather than guessing\n- [ ] Open questions are specific to this company, not generic\n\nFix any violation before presenting.\n\n---\n\n## Step 6: Output or Save to Notion\n\nPresent the full brief in a code block.\n\nIf NOTION_TOKEN and NOTION_DATABASE_ID are both set, ask: \"Save this brief to Notion?\"\n\nOn confirmation:\n\n```bash\ncat > /tmp/notion-brief-payload.json << 'ENDJSON'\n{\n  \"parent\": { \"database_id\": \"NOTION_DATABASE_ID_HERE\" },\n  \"properties\": {\n    \"Name\": {\n      \"title\": [{ \"text\": { \"content\": \"Meeting Brief: COMPANY, DATE\" } }]\n    },\n    \"Date\": {\n      \"date\": { \"start\": \"YYYY-MM-DD\" }\n    }\n  },\n  \"children\": [\n    {\n      \"object\": \"block\",\n      \"type\": \"paragraph\",\n      \"paragraph\": {\n        \"rich_text\": [{ \"type\": \"text\", \"text\": { \"content\": \"BRIEF_CONTENT_HERE\" } }]\n      }\n    }\n  ]\n}\nENDJSON\ncurl -s -X POST \"https://api.notion.com/v1/pages\" \\\n  -H \"Authorization: Bearer $NOTION_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Notion-Version: 2022-06-28\" \\\n  -d @/tmp/notion-brief-payload.json\n```\n\nAfter posting: \"Brief saved to Notion. Check your database.\"\n\nIf Notion is not configured: present the brief only. Do not mention Notion.","tags":["meeting","brief","generator","opendirectory","varnan-tech","agent-skills","gtm","hermes-agent","openclaw-skills","skills","technical-seo"],"capabilities":["skill","source-varnan-tech","skill-meeting-brief-generator","topic-agent-skills","topic-gtm","topic-hermes-agent","topic-openclaw-skills","topic-skills","topic-technical-seo"],"categories":["opendirectory"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Varnan-Tech/opendirectory/meeting-brief-generator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Varnan-Tech/opendirectory","source_repo":"https://github.com/Varnan-Tech/opendirectory","install_from":"skills.sh"}},"qualityScore":"0.511","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 123 github stars · SKILL.md body (7,962 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T00:55:50.774Z","embedding":null,"createdAt":"2026-04-18T22:18:32.262Z","updatedAt":"2026-05-02T00:55:50.774Z","lastSeenAt":"2026-05-02T00:55:50.774Z","tsv":"'-06':1079 '-28':1080 '/search':399,440,481,521,559,597,644,682 '/tmp/meeting-brief-request.json':734,847 '/tmp/notion-brief-payload.json':1016,1082 '/v1/pages':1063 '/v1beta/models/gemini-2.0-flash:generatecontent?key=$gemini_api_key':840 '0':377,859,862 '0.3':830 '0.5':372 '1':19,73,128,389,748 '2':264,427 '2022':1078 '2500':832 '3':341,471,818 '30':431 '4':510,710 '400':809,942 '5':422,461,505,545,550,581,620,667,705,901 '6':586,982 '7':634 '8':672 'add':187,212 'advanc':419,458,502,542,578,617,664,702 'aistudio.google.com':211 'altern':574 'amount':121 'analyst':745 'announc':455 'answer':424,463,507,547,583,622,669,707 'api':138,141,146,149,170,179,195,204,406,409,447,450,488,491,528,531,566,569,604,607,651,654,689,692 'api.notion.com':1062 'api.notion.com/v1/pages':1061 'api.tavily.com':398,439,480,520,558,596,643,681 'api.tavily.com/search':397,438,479,519,557,595,642,680 'app.tavily.com':186 'application/json':404,445,486,526,564,602,649,687,845,1073 'ask':35,256,270,1006 'author':1065 'background':674,697 'ban':806,937 'bash':135,392,433,474,514,552,590,637,675,732,1014 'bearer':1066 'block':288,995,1043 'brief':3,24,50,57,78,98,229,356,753,813,882,939,991,1009,1031,1053,1085,1099 'busi':758 'c':849 'cal':55 'call':23,46,77,752 'candid':858 'career':698 'case':539 'cat':733,1015 'check':130,905,1089 'children':1041 'cite':765 'claim':95,763 'code':994 'collect':267 'come':100 'compani':7,49,61,68,251,258,277,318,390,412,453,494,534,572,610,659,888,973,1032 'competitor':551,573 'configur':1096 'confirm':131,240,1013 'contact':11,65,291,625,635,657,673,695,890,952 'content':365,402,443,484,524,562,600,647,685,820,843,860,877,1029,1052,1054,1071 'content-typ':401,442,483,523,561,599,646,684,842,1070 'context':266 'continu':227 'count':123 'cover':312 'creat':51 'critic':85 'curl':393,434,475,515,553,591,638,676,834,1057 'd':405,446,487,527,565,603,650,688,846,853,857,1081 'dash':804,932 'data':112,789,796,910,958 'databas':161,164,223,1001,1019,1022,1091 'date':284,895,1033,1034,1035 'day':432 'dd':1040 'decis':944 'demo':298 'depth':418,457,501,541,577,616,663,701 'detail':126 'develop':759 'discoveri':297 'domain':321,336 'domain/url':280 'e.g':330 'echo':136,144,152,159 'em':803,931 'employe':122,415 'endjson':735,833,1017,1056 'engin':497 'env':133,191,216 'everi':91,762,911 'example.com':332 'fabric':119 'fact':92,912 'featur':536 'file':192,217,731 'find':777,924 'fix':976 'follow':269,300 'follow-up':299 'format':775,929 'found':117,387,414,801,963 'full':717,990 'fund':120,587,611 'gather':265 'gemini':26,80,145,148,194,203,713,726 'generat':4,47,58 'generationconfig':828 'generativelanguage.googleapis.com':839 'generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generatecontent?key=$gemini_api_key':838 'generic':975 'get':183,208 'goal':307,783,928 'growth':589,614 'gtm':743 'guess':966 'h':400,441,482,522,560,598,645,683,841,1064,1069,1074 'headquart':416 'id':162,165,224,1002,1020,1023 'import':850 'includ':334,423,462,506,546,582,621,668,706 'inform':116,386,800,962 'infrastructur':498 'input':241 'instruct':737,826,868 'invent':89,788,909 'json':852 'json.load':854 'keep':368 'key':139,142,147,150,171,180,196,205,407,410,448,451,489,492,529,532,567,570,605,608,652,655,690,693 'last':430 'limit':114,384,798,960 'line':935 'linkedin':699 'make':325 'maker':945 'mark':106,380 'max':420,459,503,543,579,618,665,703 'maxoutputtoken':831 'meet':2,40,56,261,283,295,760,894,896,1030 'meeting-brief-gener':1 'mention':780,925,1103 'minimum':249 'minut':819 'miss':173,198,226,275,290 'mm':1039 'month':469 'must':99,246,764,814 'name':8,62,252,278,292,626,658,696,889,891,1026 'never':118 'news':429,454,466 'notion':32,84,153,155,160,163,219,222,236,987,997,1000,1011,1021,1067,1076,1088,1093,1104 'notion-vers':1075 'number':93 'object':1042 'one':352 'open':967 'option':10,28,64,81,285 'output':232,983 'output-template.md':886 'overview':391,413 'page':20,74,749 'paragraph':1045,1046 'parent':1018 'part':738,821,861 'per':879 'point':781,786,921,926 'post':396,437,478,518,556,594,641,679,837,1060,1084 'pre':22,54,76,751 'pre-cal':21,53,75,750 'precis':329 'prepar':37,746 'present':243,907,980,988,1097 'price':513,537 'print':856 'product':125,511,535 'profil':636 'properti':1025 'prospect':43 'provid':247,255,282,316,628,771,893,899,954 'public':115,385,799,961 'python3':848 'qa':904 'qbr':302 'qualifi':378 'queri':327,411,452,493,533,571,609,656,694 'question':968 'rais':612 'rang':468 'rather':964 'read':714,718 'recent':428 'references/brief-format.md':715 'references/output-template.md':719 'replac':864 'request':727 'requir':132,182,207,276 'research':14,41,66,342,744,772,779,795,823,865 'result':105,360,369,379,421,460,504,544,580,619,666,704,824,866,874,880,919 'return':376 'rich':1047 'role':660 'rule':86,761 'run':12,345,629 'sale':756 'save':29,82,237,357,985,1007,1086 'say':947,959 'scannabl':816 'score':367,371 'search':104,111,338,347,375,388,417,426,456,470,500,509,540,549,576,585,615,632,633,662,671,700,873 'section':108,353,382,792,946,955 'self':903 'self-qa':902 'sequenc':349 'set':143,151,158,167,1005 'setup':129 'site':331 'skill' 'skill-meeting-brief-generator' 'skip':239 'snippet':366,878 'sourc':767,915 'source-varnan-tech' 'specif':90,304,970 'specifi':949 'stack':473,496 'start':1036 'step':127,263,340,709,900,981 'stop':174,199 'structur':884 'synthes':17,71,711 'sys':851 'sys.stdin':855 'system':736 'take':5,59 'talk':785,920 'target':13,351 'tavili':16,70,103,137,140,169,178,326,344,408,449,490,530,568,606,653,691,872,918 'tech':472 'technolog':495 'tell':175,200 'temp':730 'temperatur':829 'templat':723,883 'term':339 'text':234,739,822,863,1028,1048,1050,1051 'time':467 'titl':294,363,661,875,1027 'token':154,156,220,998,1068 'tool':499 'top':359 'topic':305,465 'topic-agent-skills' 'topic-gtm' 'topic-hermes-agent' 'topic-openclaw-skills' 'topic-skills' 'topic-technical-seo' 'total':811 'true':425,464,508,548,584,623,670,708 'two':630 'type':296,403,444,485,525,563,601,648,686,844,897,1044,1049,1072 'url':319,364,768,876,916 'use':33,322,538,721,773,922 'user':177,202,245,309,315 'valuat':613 'var':134 'version':1077 'via':15,69 'violat':978 'vs':575 'want':310 'word':807,810,938,943 'write':724,797 'x':395,436,477,517,555,593,640,678,836,1059 'yyyi':1038 'yyyy-mm-dd':1037","prices":[{"id":"2c472c42-47bd-4c1a-9c79-3c138737b6ec","listingId":"b3bb740f-3148-44e0-b69a-b7053901cd09","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Varnan-Tech","category":"opendirectory","install_from":"skills.sh"},"createdAt":"2026-04-18T22:18:32.262Z"}],"sources":[{"listingId":"b3bb740f-3148-44e0-b69a-b7053901cd09","source":"github","sourceId":"Varnan-Tech/opendirectory/meeting-brief-generator","sourceUrl":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/meeting-brief-generator","isPrimary":false,"firstSeenAt":"2026-04-18T22:18:32.262Z","lastSeenAt":"2026-05-02T00:55:50.774Z"}],"details":{"listingId":"b3bb740f-3148-44e0-b69a-b7053901cd09","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Varnan-Tech","slug":"meeting-brief-generator","github":{"repo":"Varnan-Tech/opendirectory","stars":123,"topics":["agent-skills","gtm","hermes-agent","openclaw-skills","skills","technical-seo"],"license":null,"html_url":"https://github.com/Varnan-Tech/opendirectory","pushed_at":"2026-04-30T18:54:05Z","description":" AI Agent Skills built for GTM, Technical Marketing, and growth automation.","skill_md_sha":"82139e071519a9cc2d3f07ca2ff68f223876000e","skill_md_path":"skills/meeting-brief-generator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/meeting-brief-generator"},"layout":"multi","source":"github","category":"opendirectory","frontmatter":{"name":"meeting-brief-generator","description":"Takes a company name and optional contact, runs targeted research via Tavily, synthesizes a 1-page pre-call brief with Gemini, and optionally saves it to Notion. Use when asked to prepare for a meeting, research a prospect before a call, generate a company brief, create a pre-call summary, or write a meeting prep doc. Trigger when a user says \"prepare me for a meeting with\", \"research this company before my call\", \"generate a meeting brief for\", \"I have a call with X tomorrow\", or \"create a prospect brief for\".","compatibility":"[claude-code, gemini-cli, github-copilot]"},"skills_sh_url":"https://skills.sh/Varnan-Tech/opendirectory/meeting-brief-generator"},"updatedAt":"2026-05-02T00:55:50.774Z"}}