A web app for tracking non-dilutive grants and VC/accelerator funding across the US and Taiwan, built around the SnapSleep AI fundraising effort (currently: NIH SBIR Phase I, pre-submission).
npm install
npm run dev # local dev server
npm run build # type-check + production build to dist/| View | What it does |
|---|---|
| Discover | All programs, with Grants ↔ VC/Accelerators and US ↔ Taiwan toggles, search, deadline / non-dilutive / new-this-week / starred filters. NEW badges mark items first seen by the daily sync within 7 days. |
| Pipeline | Kanban of programs you're pursuing: Discovered → Researching → Preparing → Submitted → In Review → Awarded / Passed. VC cards carry a contact/intro status field. |
| SnapSleep AI | NIH SBIR Phase I workspace: 20-step application checklist (registrations → strategy → documents → submission), milestone timeline against the Sep 5 deadline, and a notes/activity log. |
Every program card shows application deadline (color-coded by urgency), funding amount / check size in native currency with an indicative USD⇄TWD conversion, and whether the money is dilutive (equity) or non-dilutive. Taiwanese programs carry their official Chinese names (e.g. 台灣新創競技場, 小型企業創新研發計畫).
scripts/sync.mjs pulls live opportunities and merges them into
public/data/catalog.json, which the app fetches at runtime (falling back to
the bundled seed in src/data/catalog.seed.json when unreachable):
- Grants.gov Search2 API (official, keyless) — sleep-related US federal grants, enriched with award floors/ceilings from the detail endpoint.
- Taiwan announcement pages (sbir.org.tw, 經濟部 news) — HTML anchor scan filtered by funding keywords, with Chinese/ROC-calendar deadline parsing.
Merge rules: curated seed entries always win on id collisions; each
discovered item's firstSeen date is preserved across runs (this drives the
NEW badges); items whose deadline has passed are dropped; a failing source
keeps its previous items rather than wiping them.
The GitHub Action .github/workflows/sync.yml runs the sync daily at 05:00
Taipei time and commits the catalog when it changes. Note: GitHub only runs
scheduled workflows on the repository's default branch. Run manually with:
npm run sync # real fetch (needs open network — e.g. CI)
npm run sync:test # offline run against scripts/fixtures/Auto-discovered amounts and deadlines come from the sources verbatim —
verify on the official pages before relying on them. The user-state layer
(src/lib/store.ts, localStorage) and the indicative FX rate
(src/lib/format.ts) are the remaining pieces to move server-side if a
backend is added.