- Posted on
- • Artificial Intelligence
Artificial Intelligence Speaking Opportunities
- Author
-
-
- User
- linuxbash
- Posts by this author
- Posts by this author
-
Win AI Speaking Opportunities from the Command Line
Artificial Intelligence talks are in high demand, but Call for Papers (CFP) windows are short, competitive, and easy to miss. If you’re a Linux/Bash user, you already have the superpower you need: the shell. With a few small scripts, you can automatically discover AI CFPs, get daily deadline alerts, and generate polished proposals in minutes.
This post shows you a practical, Bash-first workflow to consistently find and win AI speaking slots—without adding more tabs to your browser or to‑do list.
Why this matters (and why Bash helps)
Opportunity is perishable: Many CFPs stay open for only a few weeks.
Consistency beats chance: Automating discovery and reminders helps you submit regularly.
Reproducibility: Bash scripts and Markdown templates make your proposals fast to create, easy to version, and simple to reuse.
What you’ll use
git: Pull a maintained conference dataset.
jq: Filter JSON data for AI/ML CFPs with approaching deadlines.
cron + optional desktop notifications: Get daily alerts.
pandoc: Turn your Markdown proposal into DOCX/HTML in seconds.
curl (optional): Post alerts to Slack or another webhook.
Install the essentials
Debian/Ubuntu (apt):
sudo apt update
sudo apt install -y git jq curl pandoc cron libnotify-bin
# Enable cron on Debian/Ubuntu:
sudo systemctl enable --now cron
Fedora/RHEL/CentOS Stream (dnf):
sudo dnf install -y git jq curl pandoc cronie libnotify
# Enable cron on Fedora/RHEL:
sudo systemctl enable --now crond
openSUSE Leap/Tumbleweed (zypper):
sudo zypper refresh
sudo zypper install -y git jq curl pandoc cron libnotify-tools
# Enable cron on openSUSE:
sudo systemctl enable --now cron
Note: notify-send works in a graphical session; cron jobs typically run headless. The scripts below also provide a Slack webhook option.
1) Discover AI CFPs automatically (Bash + jq)
We’ll use the open “tech-conferences/conference-data” repository and filter for AI/ML keywords with upcoming CFP deadlines. First, clone the data:
git clone --depth 1 https://github.com/tech-conferences/conference-data.git "$HOME/conference-data"
Create a helper script to find AI/ML CFPs that close within the next N days.
$HOME/bin/fetch_ai_cfps.sh:
#!/usr/bin/env bash
set -euo pipefail
DATA_DIR="${DATA_DIR:-$HOME/conference-data}"
WINDOW_DAYS="${WINDOW_DAYS:-60}"
KEYWORDS="${KEYWORDS:-ai|machine learning|ml|deep learning|data science}"
TODAY=$(date -u +%s)
CUTOFF=$(date -u -d "+$WINDOW_DAYS days" +%s)
tmp=$(mktemp)
# Traverse all JSON files in the dataset and filter with jq.
find "$DATA_DIR" -type f -name "*.json" -print0 \
| xargs -0 -I{} jq -r --arg re "$KEYWORDS" --argjson today $TODAY --argjson cutoff $CUTOFF '
.[]? as $c
| ($c.name // $c.title // "") as $name
| ($c.url // $c.website // $c.link // "") as $url
| ($c.city // $c.location // "") as $loc
| ($c.country // "") as $country
| ($c.cfpEndDate // $c.cfpClose // $c.cfp?.deadline // $c.cfp?.end // $c.callForPapers?.end // "") as $deadline
| ($c.topics // $c.tags // []) as $tags
| ($name + " " + ($tags|join(" "))) as $hay
| select($hay|test($re;"i"))
| select(($deadline|length) > 0)
| (try ($deadline|sub("Z$";"")|fromdateiso8601) catch 0) as $dl
| select($dl >= $today and $dl <= $cutoff)
| @tsv [$dl, $name, $url, ($loc + (if $country != "" then ", "+$country else "" end))]
' "{}" >> "$tmp"
if [[ ! -s "$tmp" ]]; then
echo "No AI/ML CFPs closing in next $WINDOW_DAYS days."
rm -f "$tmp"
exit 0
fi
# Sort by deadline and pretty-print dates.
sort -n "$tmp" | awk -F '\t' '{
cmd="date -u -d @"$1" +%Y-%m-%d"
cmd | getline d
close(cmd)
printf "%s\t%s\t%s\t%s\n", d, $2, $3, $4
}' | column -t -s $'\t'
rm -f "$tmp"
Make it executable and run it:
chmod +x "$HOME/bin/fetch_ai_cfps.sh"
"$HOME/bin/fetch_ai_cfps.sh"
Tip:
Adjust KEYWORDS to match your niche (e.g., “NLP|LLM|MLOps|GenAI”).
Set WINDOW_DAYS to tighten or widen your alert horizon.
2) Turn results into daily alerts (cron + notify-send or Slack)
Create a small alert wrapper that runs the finder, prints the results, and optionally pushes a notification.
$HOME/bin/cfp_alert.sh:
#!/usr/bin/env bash
set -euo pipefail
OUT="$("$HOME/bin/fetch_ai_cfps.sh")"
case "$OUT" in
"No AI/ML CFPs"*) exit 0 ;;
esac
echo "$OUT"
# Desktop notification if available (in a GUI session).
if command -v notify-send >/dev/null && { [[ -n "${DISPLAY:-}" ]] || [[ -n "${WAYLAND_DISPLAY:-}" ]] ; }; then
# Truncate body if too long for your DE
BODY="$(echo "$OUT" | head -n 10)"
notify-send "AI CFPs closing soon" "$BODY"
fi
# Optional: Slack (or any webhook) using an env var
if [[ -n "${SLACK_WEBHOOK_URL:-}" ]]; then
payload=$(jq -n --arg text "*AI CFPs closing soon*:\n```\n$OUT\n```" '{text:$text}')
curl -sS -X POST -H 'Content-type: application/json' --data "$payload" "$SLACK_WEBHOOK_URL" >/dev/null
fi
Schedule it with cron (daily at 08:00). Edit your crontab:
crontab -e
Add a line (customize keywords and window as needed):
0 8 * * * KEYWORDS='ai|ml|machine learning|deep learning|genai|nlp' WINDOW_DAYS=30 SLACK_WEBHOOK_URL='https://hooks.slack.com/services/XXX/YYY/ZZZ' bash $HOME/bin/cfp_alert.sh >> $HOME/ai-cfp.log 2>&1
Now you’ll get a daily digest in your terminal log, desktop notification (when you’re logged in graphically), and/or Slack.
3) Generate ready-to-submit proposals in seconds (Markdown + pandoc)
Stop rewriting bios and outlines. Use a simple generator that scaffolds a Markdown proposal and exports to DOCX/HTML so you can attach it anywhere.
$HOME/bin/new_proposal.sh:
#!/usr/bin/env bash
set -euo pipefail
read -rp "Talk title: " TITLE
read -rp "Event (optional): " EVENT
read -rp "Duration (e.g., 30m): " DURATION
echo "Short abstract (end with Ctrl-D):"
ABSTRACT=$(</dev/stdin)
SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | tr -cd 'a-z0-9 -' | tr ' ' '-' | sed 's/-\+/-/g')
DIR="$HOME/ai-proposals/${SLUG}-$(date +%Y%m%d)"
mkdir -p "$DIR"
MD="$DIR/proposal.md"
cat > "$MD" <<EOF
---
title: "$TITLE"
event: "${EVENT:-TBD}"
duration: "$DURATION"
author:
name: "YOUR NAME"
email: "you@example.com"
bio: "50–80 words speaker bio here."
---
# $TITLE
$ABSTRACT
## Outline
- Introduction (5m)
- Core concepts and demo (20m)
- Q&A (5m)
## Takeaways
- Attendees learn X
- Attendees can apply Y
- Attendees avoid Z
## Requirements
- Projector (HDMI)
- Wi‑Fi (for optional live demo)
EOF
pandoc "$MD" -o "$DIR/proposal.docx"
pandoc "$MD" -o "$DIR/proposal.html"
echo "Wrote:"
echo " $MD"
echo " $DIR/proposal.docx"
echo " $DIR/proposal.html"
Use it:
chmod +x "$HOME/bin/new_proposal.sh"
"$HOME/bin/new_proposal.sh"
You’ll get clean DOCX/HTML files you can upload to forms immediately.
4) Track your submissions with a lightweight ledger (CSV + Bash)
A simple CSV file keeps you from double-submitting, and lets you see what’s pending or accepted.
$HOME/bin/add_submission.sh:
#!/usr/bin/env bash
set -euo pipefail
LEDGER="$HOME/ai-speaking/submissions.csv"
mkdir -p "$(dirname "$LEDGER")"
if [[ ! -f "$LEDGER" ]]; then
echo "date,title,event,url,status,cfp_deadline,notes" > "$LEDGER"
fi
DATE=$(date +%F)
TITLE=${1:-}
EVENT=${2:-}
URL=${3:-}
STATUS=${4:-"submitted"}
DEADLINE=${5:-}
NOTES=${6:-}
if [[ -z "$TITLE" || -z "$EVENT" ]]; then
echo "Usage: add_submission.sh \"Talk title\" \"Event\" [url] [status] [cfp_deadline YYYY-MM-DD] [notes]" >&2
exit 1
fi
printf '%s,"%s","%s",%s,%s,%s,"%s"\n' \
"$DATE" "$TITLE" "$EVENT" "${URL:-}" "$STATUS" "${DEADLINE:-}" "$NOTES" >> "$LEDGER"
echo "Logged to $LEDGER"
$HOME/bin/upcoming_deadlines.sh:
#!/usr/bin/env bash
set -euo pipefail
LEDGER="$HOME/ai-speaking/submissions.csv"
WINDOW_DAYS="${1:-30}"
CUTOFF=$(date -u -d "+$WINDOW_DAYS days" +%F)
if [[ ! -f "$LEDGER" ]]; then
echo "No ledger at $LEDGER"
exit 0
fi
# Print entries with a CFP deadline on or before the cutoff
awk -F, -v cutoff="$CUTOFF" 'NR==1{next} $6 && $6<=cutoff {print $0}' "$LEDGER" | sort -t, -k6,6
Use them:
chmod +x "$HOME/bin/add_submission.sh" "$HOME/bin/upcoming_deadlines.sh"
# Log a submission
"$HOME/bin/add_submission.sh" "Practical GenAI on Bash" "AI Dev Summit" "https://conf.example/cfp" "submitted" "2026-09-15" "Submitted via Paper form"
# See deadlines in the next 30 days
"$HOME/bin/upcoming_deadlines.sh" 30
Real-world flow (putting it all together)
Morning cron alert flags two AI CFPs closing within 14 days.
You run new_proposal.sh, paste your abstract, and get DOCX/HTML exports in under a minute.
You submit to both events and log them with add_submission.sh.
upcoming_deadlines.sh shows what’s still urgent; your daily cron keeps you honest.
This cadence—discovery, preparation, submission, tracking—compounds quickly into more acceptances.
Conclusion and next steps
Speaking accelerates your AI career: it builds credibility, network, and opportunities. With a small, scriptable workflow, you can consistently discover CFPs, hit deadlines, and submit professional proposals—without extra overhead.
Your next steps:
Install the tools (apt/dnf/zypper commands above).
Clone the conference dataset.
Drop the scripts into $HOME/bin, make them executable, and wire up your cron job.
Ship your next AI talk this week.
If you want to go further, add:
A Git repo for proposals, so your abstracts and outlines evolve with version control.
A webhook to your team’s chat for shared visibility.
A makefile to bundle your bio, headshot, and proposal into a single artifact.
Your shell can be your best speaking coach—quietly, every day.