<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michalis Solomou</title>
    <description>The latest articles on DEV Community by Michalis Solomou (@michalis_solomou_ef4e3025).</description>
    <link>https://dev.to/michalis_solomou_ef4e3025</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4027664%2F81da894d-9457-4603-b4b4-2f14bbe5719e.png</url>
      <title>DEV Community: Michalis Solomou</title>
      <link>https://dev.to/michalis_solomou_ef4e3025</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/michalis_solomou_ef4e3025"/>
    <language>en</language>
    <item>
      <title>$389.1M Across 4 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Sat, 29 Aug 2026 12:52:49 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/3891m-across-4-fresh-sec-form-d-filings-this-week-37nj</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/3891m-across-4-fresh-sec-form-d-filings-this-week-37nj</guid>
      <description>&lt;p&gt;Four companies filed public SEC Form D notices this week, disclosing a combined &lt;strong&gt;$389,094,710&lt;/strong&gt; in new capital raised. Each filing is scanned, scored, and enriched by &lt;a href="https://fundingsignals.net?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round26" rel="noopener noreferrer"&gt;Funding Signals&lt;/a&gt; the moment it hits SEC EDGAR — days to weeks before any funding-news outlet is likely to cover it.&lt;/p&gt;

&lt;h2&gt;
  
  
  This week's filings
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Epicrispr Biotechnologies, Inc.&lt;/strong&gt; — $176,754,406 (Biotechnology, score 97/100)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ICON Technology, Inc.&lt;/strong&gt; — $114,887,843 (Other Technology, score 97/100)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;K Health, Inc.&lt;/strong&gt; — $58,949,942 (Health Care, score 90/100)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Oxbridge Health, Inc.&lt;/strong&gt; — $38,502,519 (Other Health Care, score 91/100)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why this matters for outbound
&lt;/h2&gt;

&lt;p&gt;A funding round means fresh, unallocated budget and a board expecting it to be spent on growth — the best B2B sales trigger there is, if you catch it before everyone else does. Form D filings are public the moment SEC EDGAR publishes them, which is almost always earlier than any press coverage (most private raises never get press coverage at all).&lt;/p&gt;

&lt;p&gt;Funding Signals turns each filing into a ready-to-work lead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real domain, contact email, and social links — found on demand, charged only if we actually find something&lt;/li&gt;
&lt;li&gt;LinkedIn/X profiles of the named executives — pulled straight off the filing's own Item 3 disclosure&lt;/li&gt;
&lt;li&gt;Open roles at the company (what they're actually hiring for right now)&lt;/li&gt;
&lt;li&gt;Tech stack detected on their own site&lt;/li&gt;
&lt;li&gt;An AI-drafted outreach email personalized to the filing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Free tier, no card required: &lt;a href="https://fundingsignals.net?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round26" rel="noopener noreferrer"&gt;fundingsignals.net&lt;/a&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>funding</category>
      <category>sales</category>
      <category>api</category>
    </item>
    <item>
      <title>$1.32B Across 6 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Fri, 28 Aug 2026 12:51:12 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/132b-across-6-fresh-sec-form-d-filings-this-week-5adi</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/132b-across-6-fresh-sec-form-d-filings-this-week-5adi</guid>
      <description>&lt;p&gt;Every week we scan new SEC Form D filings the moment they hit EDGAR, score each one 0-100 as a B2B sales lead, and turn the best ones into ready-to-work accounts. Here's what filed this week — six companies, $1,324,841,900 combined.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kalshi Inc. — $1,120,010,122 (Other Technology, score 97)
&lt;/h2&gt;

&lt;p&gt;The largest single raise we've tracked since we started this newsletter — over a billion dollars in one Form D filing, filed just days ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prefect Technologies, Inc. — $65,330,314 (Other Technology, score 97)
&lt;/h2&gt;

&lt;p&gt;First-time filer, fresh budget, filed the same week as Kalshi.&lt;/p&gt;

&lt;h2&gt;
  
  
  ChargeItSpot, LLC — $57,096,316 (Other Technology, score 97)
&lt;/h2&gt;

&lt;p&gt;Another first-time filer — nobody has pitched them yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hydra Host, Inc. — $35,000,000 (Other Technology, score 94)
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Cardiosense, Inc. — $26,137,050 (Other Health Care, score 90)
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Quaestor Technologies, Inc. — $21,268,098 (Other Technology, score 91)
&lt;/h2&gt;




&lt;p&gt;All six filed publicly on SEC EDGAR days before any funding-news outlet is likely to cover them. Funding Signals turns filings like these into a scored, enriched lead feed the moment they're filed — real domain + contact emails, LinkedIn/X profiles of the named executives, open roles, tech stack, and an AI-drafted outreach email, all pay-per-use and charged only when something is actually found.&lt;/p&gt;

&lt;p&gt;Free tier, no card required: &lt;a href="https://fundingsignals.net/this-week?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round25" rel="noopener noreferrer"&gt;https://fundingsignals.net/this-week?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round25&lt;/a&gt;&lt;/p&gt;

</description>
      <category>saas</category>
      <category>startup</category>
      <category>sales</category>
      <category>b2b</category>
    </item>
    <item>
      <title>$592.1M Across 6 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Thu, 27 Aug 2026 15:59:45 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/5921m-across-6-fresh-sec-form-d-filings-this-week-ch6</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/5921m-across-6-fresh-sec-form-d-filings-this-week-ch6</guid>
      <description>&lt;p&gt;Six companies filed SEC Form D this week, raising a combined &lt;strong&gt;$592.1M&lt;/strong&gt;. Here's what our scoring model flagged as the highest-quality signals — and why "just raised funding" is one of the best cold-outreach triggers in B2B sales.&lt;/p&gt;

&lt;h2&gt;
  
  
  The filings
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Generalist AI, Inc.&lt;/strong&gt; — $198.2M (Other Technology, score 97/100)&lt;br&gt;
&lt;strong&gt;CSS Solutions LLC&lt;/strong&gt; — $122.9M (Other Technology, score 95/100)&lt;br&gt;
&lt;strong&gt;EfficientAI Corp&lt;/strong&gt; — $93.1M (Other Technology, score 97/100)&lt;br&gt;
&lt;strong&gt;EXUMA Biotech Corp.&lt;/strong&gt; — $70.0M (Biotechnology, score 94/100)&lt;br&gt;
&lt;strong&gt;Blacksmith Software Inc.&lt;/strong&gt; — $66.3M (Other Technology, score 93/100)&lt;br&gt;
&lt;strong&gt;Locus Robotics Corp.&lt;/strong&gt; — $41.6M (Other Technology, score 96/100)&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for sales
&lt;/h2&gt;

&lt;p&gt;A company that just closed a funding round has fresh budget, a mandate to spend it fast, and almost always a hiring push right behind it. That's a very different conversation than a cold list — you're not guessing whether they have budget, you know they do, and you know roughly when it landed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we score it
&lt;/h2&gt;

&lt;p&gt;Every SEC Form D filing gets pulled from EDGAR the moment it's public, then scored 0-100 on raise size, industry, filer history, and other signals — so you're not digging through raw filings by hand.&lt;/p&gt;

&lt;p&gt;Funding Signals turns these filings into scored, enriched sales leads: company info, disclosed executives, and (optionally) their LinkedIn/X profiles and contact details.&lt;/p&gt;

&lt;p&gt;Free API key, no card required: &lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round24" rel="noopener noreferrer"&gt;https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round24&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sales</category>
      <category>startup</category>
      <category>api</category>
      <category>python</category>
    </item>
    <item>
      <title>$393.5M Across 5 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Wed, 26 Aug 2026 14:24:23 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/3935m-across-5-fresh-sec-form-d-filings-this-week-3858</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/3935m-across-5-fresh-sec-form-d-filings-this-week-3858</guid>
      <description>&lt;p&gt;Five companies filed SEC Form D funding notices this week, disclosing $393.5M combined — before most of them ever hit TechCrunch.&lt;/p&gt;

&lt;h2&gt;
  
  
  The raises
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CSS Solutions LLC&lt;/strong&gt; — $122.9M (Other Technology, score 96)&lt;br&gt;
&lt;strong&gt;Ultra Robotics Corp.&lt;/strong&gt; — $57.1M (Other Technology, score 96)&lt;br&gt;
&lt;strong&gt;EXUMA Biotech Corp.&lt;/strong&gt; — $70.0M (Biotechnology, score 95)&lt;br&gt;
&lt;strong&gt;Blacksmith Software Inc.&lt;/strong&gt; — $66.3M (Other Technology, score 94)&lt;br&gt;
&lt;strong&gt;Ensysce Biosciences&lt;/strong&gt; — $77.2M (Other Health Care, score 93)&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters if you sell B2B
&lt;/h2&gt;

&lt;p&gt;A Form D is a legal notice, not a press release — most companies file one within 15 days of their first sale of securities, and most never issue a press release about it at all. If you're only watching TechCrunch or Google Alerts, you're seeing a minority of the funding activity that's actually happening.&lt;/p&gt;

&lt;p&gt;Each of these is a company that just got a fresh budget and a growth mandate, days or weeks before their competitors' sales teams even hear about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we track this
&lt;/h2&gt;

&lt;p&gt;Funding Signals pulls directly from SEC EDGAR's Form D filings, scores each one for lead quality (raise size, recency, industry fit, first-time-filer status), and serves it through a free API — no card required.&lt;/p&gt;

&lt;p&gt;fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=weekly&amp;amp;utm_campaign=round23&lt;/p&gt;

</description>
      <category>funding</category>
      <category>sales</category>
      <category>api</category>
      <category>startup</category>
    </item>
    <item>
      <title>$2.24B Across 7 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Fri, 21 Aug 2026 16:56:50 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/224b-across-7-fresh-sec-form-d-filings-this-week-13mn</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/224b-across-7-fresh-sec-form-d-filings-this-week-13mn</guid>
      <description>&lt;p&gt;Seven SEC Form D filings this week, combining for $2.24B in fresh capital — the biggest week we've tracked so far. Every one of these is a real buying signal: a company that just closed a round, with a budget that hasn't been allocated yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The raises
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Flexential&lt;/strong&gt; — $800M, Other Technology. The largest single raise in this feed's history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QuantumLight&lt;/strong&gt; — $432M, Other Technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Higgsfield&lt;/strong&gt; — $400M, Other Technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tejon Treating &amp;amp; Carbon Solutions&lt;/strong&gt; — $295M, Oil &amp;amp; Gas. Proof this isn't a SaaS-only list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;599 Holdings&lt;/strong&gt; — $240.5M, Construction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hopscotch Primary Care&lt;/strong&gt; — $53M, Health Care.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertical Insure&lt;/strong&gt; — $21M, Other Technology. Small enough that most SDR tools haven't picked it up yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for outreach
&lt;/h2&gt;

&lt;p&gt;A company that just raised is, for a short window, easier to reach than it will ever be again: budget just got approved, headcount is about to grow, and the vendor list is still open. Wait three months and that window is gone — the tools are picked, the relationships are formed.&lt;/p&gt;

&lt;p&gt;Most sales tools only cover venture-backed SaaS. SEC Form D filings cover everything — construction, oil &amp;amp; gas, healthcare, energy — because every private company raising outside capital in the US has to file one.&lt;/p&gt;

&lt;p&gt;We built Funding Signals to surface these the day they're filed, scored on likelihood-to-buy-soon: raise size, recency, industry fit, first-time-filer status. Free tier included, no credit card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_campaign=round23" rel="noopener noreferrer"&gt;https://fundingsignals.net/?utm_source=devto&amp;amp;utm_campaign=round23&lt;/a&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>funding</category>
      <category>sales</category>
      <category>saas</category>
    </item>
    <item>
      <title>$805M Across 7 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Wed, 19 Aug 2026 15:05:24 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/805m-across-7-fresh-sec-form-d-filings-this-week-1b3c</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/805m-across-7-fresh-sec-form-d-filings-this-week-1b3c</guid>
      <description>&lt;p&gt;Seven companies filed SEC Form D notices this week, raising a combined &lt;strong&gt;$804,986,450&lt;/strong&gt; to build products, hire, and go to market. Ranked below by our 0-100 lead-timing score — raise size, recency, industry fit, and first-time-filer status — highest first.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Whatnot Inc. — $547.0M (score 99)
&lt;/h2&gt;

&lt;p&gt;Other Technology. The largest single raise we've scored to date.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Pixxel Space Technologies, Inc. — $73.0M (score 99)
&lt;/h2&gt;

&lt;p&gt;Other Technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Obsidian Security, Inc. — $81.5M (score 99)
&lt;/h2&gt;

&lt;p&gt;Other Technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Qualitate, Inc. — $31.9M (score 96)
&lt;/h2&gt;

&lt;p&gt;Other Technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Medora Manufacturing LLC — $32.1M
&lt;/h2&gt;

&lt;p&gt;Manufacturing.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Teal Health, Inc. — $21.3M
&lt;/h2&gt;

&lt;p&gt;Health Care.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Air Control Concepts Holdings, L.P. — $18.3M
&lt;/h2&gt;

&lt;p&gt;Other Energy.&lt;/p&gt;




&lt;p&gt;Each of these companies just got a fresh mandate to spend — new hires, new tools, new vendors. If you sell into any of these industries, this is the week to reach out, not after the press release everyone else already saw.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round22" rel="noopener noreferrer"&gt;Funding Signals&lt;/a&gt; to turn SEC Form D filings into scored, enriched B2B leads — company, industry, raise size, resolved domain, and contact points — the same week they file. Free API key, no card required.&lt;/p&gt;

&lt;p&gt;Full list, updated daily: &lt;a href="https://fundingsignals.net/this-week?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round22" rel="noopener noreferrer"&gt;fundingsignals.net/this-week&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sales</category>
      <category>funding</category>
      <category>startup</category>
      <category>apigateway</category>
    </item>
    <item>
      <title>$1.02B+ Across 5 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Tue, 18 Aug 2026 12:51:18 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/102b-across-5-fresh-sec-form-d-filings-this-week-51a3</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/102b-across-5-fresh-sec-form-d-filings-this-week-51a3</guid>
      <description>&lt;p&gt;Five more SEC Form D filings hit EDGAR this week, worth $1.02B+ combined. All fresh, all scored 0-100 on likelihood-to-buy-soon by &lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round21" rel="noopener noreferrer"&gt;Funding Signals&lt;/a&gt; — a free API that turns public SEC filings into sales-ready leads.&lt;/p&gt;

&lt;h2&gt;
  
  
  This week's raises
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://fundingsignals.net/company/iren-ltd?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round21" rel="noopener noreferrer"&gt;IREN Ltd&lt;/a&gt;&lt;/strong&gt; — $464.9M, score 100/100&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://fundingsignals.net/company/lovable-labs-inc?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round21" rel="noopener noreferrer"&gt;Lovable Labs Inc&lt;/a&gt;&lt;/strong&gt; — $382.5M, score 99/100&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://fundingsignals.net/company/georgiamune-inc?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round21" rel="noopener noreferrer"&gt;Georgiamune, Inc.&lt;/a&gt;&lt;/strong&gt; — $92.7M, score 99/100&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://fundingsignals.net/company/daytona-platforms-inc?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round21" rel="noopener noreferrer"&gt;Daytona Platforms Inc.&lt;/a&gt;&lt;/strong&gt; — $48.3M, score 99/100&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://fundingsignals.net/company/windborne-systems-inc?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round21" rel="noopener noreferrer"&gt;WindBorne Systems Inc.&lt;/a&gt;&lt;/strong&gt; — $37.1M, score 97/100&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for sales
&lt;/h2&gt;

&lt;p&gt;A Form D filing means a company just closed a private raise — real, committed budget for hiring, tooling, and vendors over the next few quarters. Most sellers hear about a raise from a press release months later, after the early movers already got the meeting.&lt;/p&gt;

&lt;p&gt;SEC EDGAR publishes these filings the moment they're made, but it's a government filing system, not a sales tool — nobody's refreshing it daily. Funding Signals parses new Form D filings as they land, scores each one on likelihood-to-buy-soon, and resolves a domain plus generic contact points. Free API key, no card required.&lt;/p&gt;

&lt;p&gt;Full list of this week's raises: &lt;a href="https://fundingsignals.net/this-week?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=round21" rel="noopener noreferrer"&gt;fundingsignals.net/this-week&lt;/a&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>funding</category>
      <category>sales</category>
      <category>api</category>
    </item>
    <item>
      <title>$225.1M Across 6 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Mon, 17 Aug 2026 13:03:11 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/2251m-across-6-fresh-sec-form-d-filings-this-week-f4a</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/2251m-across-6-fresh-sec-form-d-filings-this-week-f4a</guid>
      <description>&lt;p&gt;Every week, dozens of companies file SEC Form D notices when they raise private capital — a public record that's usually buried in a government filing system nobody checks, days to weeks before any funding-news outlet picks it up.&lt;/p&gt;

&lt;p&gt;Here are 6 fresh raises that hit our feed this week, totaling $225.1M combined:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CodeRabbit Inc.&lt;/strong&gt; — $143.0M (Other Technology, score 98)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;oneNav, Inc.&lt;/strong&gt; — $29.7M (Other Technology, score 92)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coverbase Inc.&lt;/strong&gt; — $16.3M (Other Technology, score 88)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Harton, Inc.&lt;/strong&gt; — $15.1M (Other Technology, score 85)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaly AI Inc.&lt;/strong&gt; — $11.0M (Other Technology, score 83)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twin Prime AI, Inc.&lt;/strong&gt; — $10.0M (Other Technology, score 81)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why this matters for outbound: a company that just raised has budget and a mandate to grow, but hasn't been pitched by every vendor in the space yet. By the time a raise makes headlines, that window is usually closing.&lt;/p&gt;

&lt;p&gt;We built Funding Signals to catch these the day they're filed, score them 0-100 on likelihood-to-buy-soon, and turn them into ready-to-use leads. Free tier, no card required: &lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round20" rel="noopener noreferrer"&gt;https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round20&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full breakdown of the week's raises: &lt;a href="https://fundingsignals.net/this-week?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round20" rel="noopener noreferrer"&gt;https://fundingsignals.net/this-week?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=round20&lt;/a&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>funding</category>
      <category>sales</category>
      <category>apigateway</category>
    </item>
    <item>
      <title>$216M+ Across 5 Fresh SEC Form D Filings This Week</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Sat, 15 Aug 2026 15:06:39 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/216m-across-5-fresh-sec-form-d-filings-this-week-670</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/216m-across-5-fresh-sec-form-d-filings-this-week-670</guid>
      <description>&lt;p&gt;Five new SEC Form D filings hit our feed this week, together worth more than $216M in fresh capital across Energy, Technology, and Biotech:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Company&lt;/th&gt;
&lt;th&gt;Industry&lt;/th&gt;
&lt;th&gt;Raise&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;91&lt;/td&gt;
&lt;td&gt;CIG DS1, LLC&lt;/td&gt;
&lt;td&gt;Other Energy&lt;/td&gt;
&lt;td&gt;$70.0M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;td&gt;Kikitora, Inc.&lt;/td&gt;
&lt;td&gt;Other Technology&lt;/td&gt;
&lt;td&gt;$19.7M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;td&gt;Theradaptive, Inc.&lt;/td&gt;
&lt;td&gt;Biotechnology&lt;/td&gt;
&lt;td&gt;$36.2M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;87&lt;/td&gt;
&lt;td&gt;Silicon Derivatives Inc.&lt;/td&gt;
&lt;td&gt;Other Technology&lt;/td&gt;
&lt;td&gt;$30.5M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;td&gt;Alpha Design AI, Inc.&lt;/td&gt;
&lt;td&gt;Other Technology&lt;/td&gt;
&lt;td&gt;$59.8M&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why this matters if you sell B2B
&lt;/h2&gt;

&lt;p&gt;Every one of these companies just closed a funding round, which means every one of them has fresh budget and is actively deciding what to spend it on - new infrastructure, new tools, new vendors. That decision window is open right now, not in three months when the story finally shows up in a funding-news roundup.&lt;/p&gt;

&lt;p&gt;Funding Signals pulls every US SEC Form D filing the day it hits EDGAR, scores it 0-100 for B2B sales relevance, and enriches it with company, industry, and raise size - so you can reach out while "why now" is still obviously true.&lt;/p&gt;

&lt;p&gt;Free tier, no card required: fundingsignals.net&lt;/p&gt;

</description>
      <category>sales</category>
      <category>api</category>
      <category>startup</category>
      <category>news</category>
    </item>
    <item>
      <title>Auto-Creating HubSpot Deals from New SEC Form D Filings with Python</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Sat, 15 Aug 2026 09:06:03 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/auto-creating-hubspot-deals-from-new-sec-form-d-filings-with-python-5e56</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/auto-creating-hubspot-deals-from-new-sec-form-d-filings-with-python-5e56</guid>
      <description>&lt;p&gt;Slack alerts are great for visibility, but they don't do anything by themselves — someone still has to manually create a CRM record before outreach can start. If your team runs on HubSpot, you can skip that step entirely and have a Deal waiting in the right pipeline stage the moment a company files.&lt;/p&gt;

&lt;p&gt;This builds on two earlier posts: &lt;a href="https://dev.to/michalis_solomou_ef4e3025/track-startup-funding-with-20-lines-of-python-12i2"&gt;pulling Form D filings with Python&lt;/a&gt; and &lt;a href="https://dev.to/michalis_solomou_ef4e3025/turning-a-company-name-into-a-website-enriching-sec-filings-with-python-2ni6"&gt;turning a company name into a website&lt;/a&gt; for enrichment. Here we take that enriched data and push it into HubSpot as Deals via the CRM API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Get a HubSpot private app token
&lt;/h2&gt;

&lt;p&gt;In HubSpot, go to &lt;strong&gt;Settings → Integrations → Private Apps&lt;/strong&gt;, create one with &lt;code&gt;crm.objects.deals.write&lt;/code&gt; and &lt;code&gt;crm.objects.companies.write&lt;/code&gt; scopes, and copy the access token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Pull scored filings from Funding Signals
&lt;/h2&gt;

&lt;p&gt;Same normalized, pre-scored data as the previous tutorials — no need to touch raw SEC EDGAR XML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="n"&gt;FS_API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FS_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;HUBSPOT_TOKEN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HUBSPOT_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://fundingsignals.net/api/v1/filings&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;days&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;min_score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;FS_API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;filings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Upsert the Company, then create a Deal
&lt;/h2&gt;

&lt;p&gt;HubSpot wants a Company object before it'll let you associate a Deal with it, so we do both in one pass:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;HUBSPOT_BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.hubapi.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;HUBSPOT_TOKEN&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;upsert_company&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;website&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;industry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;industry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;HUBSPOT_BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/crm/v3/objects/companies&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_deal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;company_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dealname&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;company_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; — &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;industry&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; lead&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dealstage&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;appointmentscheduled&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pipeline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;default&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deal_source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;funding_signals&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;associations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;company_id&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;types&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;associationCategory&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HUBSPOT_DEFINED&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;associationTypeId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;HUBSPOT_BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/crm/v3/objects/deals&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;filing&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;cid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;upsert_company&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;create_deal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;deal_source&lt;/code&gt; is a custom property — create it under &lt;strong&gt;Settings → Properties → Deal properties&lt;/strong&gt; so reps can filter "funding_signals" leads separately from inbound.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Add a link back to the original filing
&lt;/h2&gt;

&lt;p&gt;Deals in HubSpot support a description field — drop the source link in there so reps can verify the filing themselves before reaching out:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Source: https://fundingsignals.net/companies/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;?utm_source=devto&amp;amp;utm_medium=tutorial6&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why go straight to a Deal instead of a Contact
&lt;/h2&gt;

&lt;p&gt;A Contact with no company context sits in a queue. A Deal already has an amount, an industry, and a pipeline stage attached, so it shows up on a rep's dashboard as something to work today, not something to qualify later. For funding data specifically — where timing is the whole point — skipping the qualification step is the difference between reaching out first and reaching out fifth.&lt;/p&gt;

&lt;p&gt;Wire this up against a free &lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=tutorial6" rel="noopener noreferrer"&gt;Funding Signals&lt;/a&gt; API key if you want to see real filings flow into your own HubSpot pipeline instead of stubbing the response.&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>crm</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Get a Slack Alert the Moment a Startup Files for Funding (Python)</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Sat, 15 Aug 2026 09:02:55 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/get-a-slack-alert-the-moment-a-startup-files-for-funding-python-3jm1</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/get-a-slack-alert-the-moment-a-startup-files-for-funding-python-3jm1</guid>
      <description>&lt;p&gt;Your sales team doesn't live in their inbox — they live in Slack. If a competitor's Series B lands in a shared channel five minutes after it's filed, someone on your team can be drafting an outreach email before the news even hits TechCrunch.&lt;/p&gt;

&lt;p&gt;I already covered &lt;a href="https://dev.to/michalis_solomou_ef4e3025/track-startup-funding-with-20-lines-of-python-12i2"&gt;pulling SEC Form D filings with Python&lt;/a&gt; and &lt;a href="https://dev.to/michalis_solomou_ef4e3025/a-daily-email-digest-of-newly-funded-companies-with-python-and-cron-2aig"&gt;emailing yourself a daily digest&lt;/a&gt;. This time we're skipping email entirely and pushing new funding events straight into a Slack channel the moment they're scored, using an Incoming Webhook.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create a Slack Incoming Webhook
&lt;/h2&gt;

&lt;p&gt;In Slack, go to &lt;strong&gt;Apps → Incoming Webhooks → Add to Slack&lt;/strong&gt;, pick the channel (e.g. &lt;code&gt;#funding-alerts&lt;/code&gt;), and copy the webhook URL. It looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep it secret — anyone with that URL can post to your channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Pull today's filings
&lt;/h2&gt;

&lt;p&gt;Rather than parsing raw SEC EDGAR XML ourselves, I'm using the Funding Signals API, which already normalizes Form D filings into clean JSON (company, amount, industry, state, filing date) and scores each one for B2B sales relevance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="n"&gt;FS_API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FS_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;SLACK_WEBHOOK_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SLACK_WEBHOOK_URL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://fundingsignals.net/api/v1/filings&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;days&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;min_score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;FS_API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;filings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;min_score=70&lt;/code&gt; filters out the noise (tiny angel rounds, real-estate LLCs) and keeps only filings that look like genuine B2B prospects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Format and post to Slack
&lt;/h2&gt;

&lt;p&gt;Slack's Block Kit makes the message actually readable instead of a wall of text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;post_to_slack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;section&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mrkdwn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*&amp;lt;https://fundingsignals.net/companies/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;?utm_source=devto&amp;amp;utm_medium=tutorial5|&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;company_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;&amp;gt;*&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                    &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;💰 $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; · &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;industry&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; · &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;state&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;context&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;elements&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mrkdwn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Filed &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;filing_date&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; · relevance score &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SLACK_WEBHOOK_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;blocks&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blocks&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;


&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;filing&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;post_to_slack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each message links straight back to the full company profile on Funding Signals, so whoever sees the alert can click through for firmographics, contact leads, and the original SEC filing — no separate lookup step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Run it on a schedule
&lt;/h2&gt;

&lt;p&gt;Same GitHub Actions cron pattern from the &lt;a href="https://dev.to/michalis_solomou_ef4e3025/a-daily-email-digest-of-newly-funded-companies-with-python-and-cron-2aig"&gt;email digest tutorial&lt;/a&gt; works here — just point it at &lt;code&gt;slack_alert.py&lt;/code&gt; instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Slack Funding Alerts&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;14&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1-5"&lt;/span&gt;  &lt;span class="c1"&gt;# 9am ET, weekdays&lt;/span&gt;
&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;alert&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses: actions/checkout@v4      - uses: actions/setup-python@v5        with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;python-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3.12"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pip install requests&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;python slack_alert.py&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;FS_API_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.FS_API_KEY }}&lt;/span&gt;
          &lt;span class="na"&gt;SLACK_WEBHOOK_URL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.SLACK_WEBHOOK_URL }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Slack over email
&lt;/h2&gt;

&lt;p&gt;Email digests are great for a once-a-day summary. But funding data is time-sensitive — the earlier you reach out after a round closes, the less crowded your inbox is next to every other vendor who saw the same TechCrunch article. A Slack channel your whole sales team already has open beats a digest sitting unread until lunch.&lt;/p&gt;

&lt;p&gt;If you want to try this against real, freshly-filed data instead of stubbing it out, &lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=tutorial5" rel="noopener noreferrer"&gt;Funding Signals&lt;/a&gt; has a free tier that's enough to wire this up end to end.&lt;/p&gt;

</description>
      <category>python</category>
      <category>webdev</category>
      <category>startup</category>
      <category>automation</category>
    </item>
    <item>
      <title>A Daily Email Digest of Newly Funded Companies with Python and Cron</title>
      <dc:creator>Michalis Solomou</dc:creator>
      <pubDate>Sat, 15 Aug 2026 08:43:42 +0000</pubDate>
      <link>https://dev.to/michalis_solomou_ef4e3025/a-daily-email-digest-of-newly-funded-companies-with-python-and-cron-2aig</link>
      <guid>https://dev.to/michalis_solomou_ef4e3025/a-daily-email-digest-of-newly-funded-companies-with-python-and-cron-2aig</guid>
      <description>&lt;p&gt;I don't want to check a dashboard every morning for new funding rounds. I want it in my inbox before coffee. Here's a small Python script + cron job that does exactly that, using the same &lt;a href="https://dev.to/michalis_solomou_ef4e3025/track-startup-funding-with-20-lines-of-python-12i2"&gt;SEC EDGAR pipeline&lt;/a&gt; from an earlier post.&lt;/p&gt;

&lt;h2&gt;
  
  
  The script
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;smtplib&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;email.mime.text&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MIMEText&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_yesterdays_filings&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://efts.sec.gov/LATEST/search-index&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;forms&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;D&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dateRange&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;custom&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;research example@example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;hits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hits&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{}).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hits&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;_source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hits&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;build_digest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No new Form D filings yesterday.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;lines&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; new Form D filings — &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;display_names&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Unknown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;- &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;send_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;to_addr&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MIMEText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Subject&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Funding digest — &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;From&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;digest@yourdomain.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;    &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;To&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;to_addr&lt;/span&gt;

    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;smtplib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SMTP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;smtp.yourprovider.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;587&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;starttls&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;digest@yourdomain.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-app-password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;filings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_yesterdays_filings&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;digest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;build_digest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filings&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;send_email&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;digest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;you@yourdomain.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;endraw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;## Scheduling it
&lt;/span&gt;
&lt;span class="n"&gt;Add&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="nf"&gt;crontab &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`crontab -e`&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;endraw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;every&lt;/span&gt; &lt;span class="n"&gt;weekday&lt;/span&gt; &lt;span class="n"&gt;morning&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="n"&gt;am&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;0 7 * * 1-5 /usr/bin/python3 /path/to/digest.py &amp;gt;&amp;gt; /var/log/funding-digest.log 2&amp;gt;&amp;amp;1&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
yaml

If you don't have a server sitting around, a free-tier GitHub Actions scheduled workflow works just as well and skips the "what if my laptop is asleep" problem:



```yaml
name: Daily Funding Digest
on:
  schedule:
    - cron: '0 12 * * 1-5'  # UTC time
jobs:
  send-digest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4      - run: pip install requests
      - run: python digest.py
        env:
          SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's missing from this bare-bones version
&lt;/h2&gt;

&lt;p&gt;This gets you a working digest, but it's not a lead list yet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No filtering.&lt;/strong&gt; You'll get every filing, every industry, every state — see my &lt;a href="https://dev.to/michalis_solomou_ef4e3025/filtering-sec-form-d-filings-by-industry-and-state-with-python-4a52"&gt;post on filtering by industry and state&lt;/a&gt; to narrow it down before it hits the email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No dedup across amendment filings.&lt;/strong&gt; Companies sometimes file a Form D and then a Form D/A (amendment) days later, which will show up as a second, near-identical entry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No ranking.&lt;/strong&gt; A $200K friends-and-family round and a $50M Series B look identical in this script — you'll want to sort by offering amount at minimum.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ended up building &lt;a href="https://fundingsignals.net/?utm_source=devto&amp;amp;utm_medium=tutorial4" rel="noopener noreferrer"&gt;Funding Signals&lt;/a&gt; mostly to solve the filtering and dedup problem — it exposes a REST API you can hit from the same digest script instead of hitting raw EDGAR, already deduped and scored. The free &lt;code&gt;/v1/sample&lt;/code&gt; endpoint returns the same shape of data if you want to swap it in.&lt;/p&gt;

&lt;p&gt;Either way, the point stands: a 40-line script and a cron job beats checking a dashboard every day.&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>automation</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
