builderpulse-daily-intelligence
```markdown
What this skill does
```markdown
---
name: builderpulse-daily-intelligence
description: AI-powered daily build intelligence for indie hackers — aggregates 300+ signals from HN, GitHub, Product Hunt, HuggingFace, Google Trends, and Reddit into actionable "what to build today" reports.
triggers:
- "what should I build today"
- "show me today's builderpulse report"
- "find trending build opportunities"
- "what are indie hackers building right now"
- "analyze signals from hacker news and github"
- "generate a builder intelligence report"
- "what problems can I build in 2 hours"
- "find underserved markets from trending topics"
---
# BuilderPulse Daily Intelligence
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
BuilderPulse aggregates 300+ signals daily from Hacker News, GitHub Trending, Product Hunt, HuggingFace, Google Trends, and Reddit to surface actionable build opportunities for indie hackers and solo builders. Every morning it publishes a structured report (in English and Chinese) answering: _"What should you build today?"_ — including a flagship "2-hour build" idea, trend analysis, and a 20-question intelligence brief.
---
## How It Works
The project is a **GitHub repository as a publishing platform**:
- Daily Markdown reports are committed to `en/YYYY/YYYY-MM-DD.md` and `zh/YYYY/YYYY-MM-DD.md`
- An RSS feed is available via GitHub's commit atom feed: `../../commits/main.atom`
- Reports reference signals sourced from 10+ platforms and synthesised by AI
- The README always shows the latest report with badge links
---
## Consuming Reports Programmatically
### Fetch Today's Report via GitHub Raw API
```python
import httpx
from datetime import date
REPO = "BuilderPulse/BuilderPulse"
TODAY = date.today().strftime("%Y-%m-%d")
YEAR = date.today().strftime("%Y")
url = f"https://raw.githubusercontent.com/{REPO}/main/en/{YEAR}/{TODAY}.md"
response = httpx.get(url)
if response.status_code == 200:
report_md = response.text
print(report_md[:2000]) # preview first 2000 chars
else:
print(f"No report yet for {TODAY} (status {response.status_code})")
```
### Fetch via GitHub Contents API (with metadata)
```python
import httpx
import base64
import os
GITHUB_TOKEN = os.environ["GITHUB_TOKEN"] # optional, increases rate limit
REPO = "BuilderPulse/BuilderPulse"
TODAY = "2026-04-16"
YEAR = "2026"
headers = {"Authorization": f"Bearer {GITHUB_TOKEN}"} if GITHUB_TOKEN else {}
url = f"https://api.github.com/repos/{REPO}/contents/en/{YEAR}/{TODAY}.md"
resp = httpx.get(url, headers=headers)
data = resp.json()
content = base64.b64decode(data["content"]).decode("utf-8")
print(content)
```
### Subscribe to RSS / Atom Feed
```
https://github.com/BuilderPulse/BuilderPulse/commits/main.atom
```
Parse with any RSS library:
```python
import feedparser
feed = feedparser.parse(
"https://github.com/BuilderPulse/BuilderPulse/commits/main.atom"
)
for entry in feed.entries[:5]:
print(entry.title)
print(entry.link)
print(entry.updated)
print("---")
```
---
## Navigating the Report Archive
### Directory Structure
```
BuilderPulse/BuilderPulse
├── README.md ← always current, links to today
├── en/
│ ├── index.md ← full English archive index
│ └── 2026/
│ ├── 2026-04-16.md
│ ├── 2026-04-15.md
│ └── ...
└── zh/
├── index.md ← full Chinese archive index
└── 2026/
├── 2026-04-16.md
└── ...
```
### List All Available Reports
```python
import httpx
import os
GITHUB_TOKEN = os.environ["GITHUB_TOKEN"]
REPO = "BuilderPulse/BuilderPulse"
YEAR = "2026"
headers = {"Authorization": f"Bearer {GITHUB_TOKEN}"}
url = f"https://api.github.com/repos/{REPO}/contents/en/{YEAR}"
resp = httpx.get(url, headers=headers)
files = resp.json()
report_dates = sorted([f["name"].replace(".md", "") for f in files if f["name"].endswith(".md")])
print(f"Available reports: {len(report_dates)}")
for d in report_dates[-7:]: # last 7
print(f" {d} → https://github.com/{REPO}/blob/main/en/{YEAR}/{d}.md")
```
---
## Parsing Report Structure
A BuilderPulse report follows a consistent Markdown schema you can parse:
```python
import re
def parse_builderpulse_report(markdown: str) -> dict:
"""Extract key sections from a BuilderPulse daily report."""
result = {}
# Extract the headline summary (bold line near top)
headline = re.search(r"\*\*Today: (.+?)\*\*", markdown)
if headline:
result["headline"] = headline.group(1)
# Extract the 2-hour build idea
build_idea = re.search(r"💡 \*\*If you had 2 hours, (.+?)\*\*", markdown)
if build_idea:
result["two_hour_build"] = build_idea.group(1)
# Extract all H2/H3 section headings (signal categories)
sections = re.findall(r"^#{2,3} (.+)$", markdown, re.MULTILINE)
result["sections"] = sections
# Extract all URLs referenced
urls = re.findall(r"\(https?://[^\)]+\)", markdown)
result["urls"] = [u.strip("()") for u in urls]
# Extract signal source mentions
sources = ["Hacker News", "GitHub", "Product Hunt", "HuggingFace",
"Google Trends", "Reddit"]
result["sources_mentioned"] = [s for s in sources if s in markdown]
return result
# Usage
with open("2026-04-16.md") as f:
md = f.read()
report = parse_builderpulse_report(md)
print(report["two_hour_build"])
# → "build a self-hosted social media scheduler deployable on a $10/month VPS for small agencies"
```
---
## Building a Personal Daily Digest Agent
Use BuilderPulse as a data source for your own AI-enhanced workflow:
```python
import httpx
import base64
import os
from datetime import date
from anthropic import Anthropic
GITHUB_TOKEN = os.environ["GITHUB_TOKEN"]
ANTHROPIC_API_KEY = os.environ["ANTHROPIC_API_KEY"]
def fetch_todays_report() -> str:
today = date.today()
year = today.strftime("%Y")
day = today.strftime("%Y-%m-%d")
repo = "BuilderPulse/BuilderPulse"
headers = {"Authorization": f"Bearer {GITHUB_TOKEN}"}
url = f"https://api.github.com/repos/{repo}/contents/en/{year}/{day}.md"
resp = httpx.get(url, headers=headers)
if resp.status_code != 200:
raise ValueError(f"No report for {day}")
data = resp.json()
return base64.b64decode(data["content"]).decode("utf-8")
def personalize_digest(report: str, your_skills: str, your_interests: str) -> str:
client = Anthropic()
message = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": f"""Here is today's BuilderPulse report:
{report}
My skills: {your_skills}
My interests: {your_interests}
Based on this report, give me:
1. The top 3 build opportunities most relevant to me
2. Why each one fits my skills/interests
3. A concrete first step I could take today
Keep it under 300 words.""",
}
],
)
return message.content[0].text
# Run it
report = fetch_todays_report()
digest = personalize_digest(
report,
your_skills="Python, React, solo developer",
your_interests="developer tools, SaaS, automation"
)
print(digest)
```
---
## Setting Up a Daily Notification Bot
### GitHub Actions — Daily Slack/Discord Alert
```yaml
# .github/workflows/daily-digest.yml
name: Daily BuilderPulse Digest
on:
schedule:
- cron: "0 8 * * *" # 8 AM UTC every day
workflow_dispatch:
jobs:
fetch-and-notify:
runs-on: ubuntu-latest
steps:
- name: Fetch today's BuilderPulse report
id: fetch
run: |
TODAY=$(date +%Y-%m-%d)
YEAR=$(date +%Y)
URL="https://raw.githubusercontent.com/BuilderPulse/BuilderPulse/main/en/${YEAR}/${TODAY}.md"
CONTENT=$(curl -sf "$URL" || echo "NO_REPORT")
echo "content<<EOF" >> $GITHUB_OUTPUT
echo "$CONTENT" | head -30 >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "date=Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.