ai-startup-skills
创业公司做 AI 产品的 7 步 Agent Skill 合集:验证 → BP → 政策 → 路演 → 获客 → 定价 → 注册。
Translation pending
A live radar of online, globally-open AI competitions, agent challenges and hackathons.
OtherGitHub @nobodymeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A live radar of online, globally-open AI competitions, agent challenges and hackathons — upcoming, in progress, or ended within the last 7 days.
🔗 Live site: https://nobodyme.github.io/hackathons-online/
Layout and data are deliberately separated:
| File | Role |
|---|---|
index.html | Page shell / structure |
styles.css | Design, responsive layout, light + dark themes |
app.js | Fetches competitions.json and renders cards, filters and sort live in the browser — it recomputes status and countdowns from the current date, so the page stays accurate between refreshes |
competitions.json | The only file that changes on a refresh — the competition list |
assets/fonts/ | Self-hosted Archivo (variable woff2) — no external font dependency |
.github/workflows/deploy.yml | Publishes the site to GitHub Pages on every push to main |
The visual style is Neo-brutalist: a butter-cream ground (#fff5db), chunky Archivo set
heavy, 3px black outlines with hard offset shadows, zero corner radius, and bright color-coded
status badges (orange accent, yellow = in progress, mint = upcoming). Design tokens live at the
top of styles.css — restyling is a matter of editing those variables.
Because the page renders competitions.json client-side, refreshing the data is just a matter of
overwriting that one file — the layout never has to be regenerated.
competitions.json shape{
"generated": "YYYY-MM-DD",
"items": [
{
"id": "stable-kebab-slug",
"name": "…",
"platform": "Devpost",
"url": "https://…",
"type": "agent-challenge | coding-challenge | hackathon | benchmark",
"format": "online | hybrid",
"location": "Online",
"start": "YYYY-MM-DD",
"end": "YYYY-MM-DD",
"reg": "YYYY-MM-DD",
"prize": 10000,
"prize_kind": "cash | mixed | non-cash | unknown",
"prize_note": "e.g. split across tracks",
"summary": "One sentence, ≤160 chars.",
"conf": "confirmed | approximate | unknown",
"eligibility": "Open globally, 18+",
"audience": "all | students",
"tags": ["agents", "llm"]
}
]
}
start, end and reg are all required — no date field is ever null. A competition whose
start or end date cannot be established is left out of the file entirely rather than published
with a null: an entry you cannot plan around is not worth a row.
Many competitions have no registration step separate from submission (ARC Prize, MLH Global Hack
Week, most Devpost hackathons). For those, reg carries the submission deadline, which is the
same as end. So reg == end means "no separate registration cutoff — you have until the
deadline"; reg < end means there is a real earlier cutoff to watch.
Rules the page enforces automatically:
end is more than 7 days in the past are hidden.upcoming / in-progress / completed)."students" marks competitions restricted to students/youth. These are hidden by
default (with an "N student-only hidden" note); ticking the "I'm a student" checkbox includes
them. Detection uses the explicit audience field when present, otherwise a scan of the
eligibility text — so it works whether or not the data is tagged.The content is curated by Claude on 3 day schedule, fully AI curated and pushes to this branch which then publishes the github page. Let's see how useful this experiment turns out to be.