Gap analysis comparing boolabinc/boo-brain/bundles/fundraising-os (main branch) against our deployed instance at fundraising.boolab-casper-boo.boolab.io. Generated August 16, 2026.
Our deployed instance is ahead of the main repo in several areas, and the main repo has 4 open PRs bringing features back that originated from our instance. The open PRs represent the "latest and greatest" that hasn't been merged yet. Three of those 4 open PRs contain features our instance either already has (from direct builds) or needs.
The main gap: the bundle's infrastructure layer (versioned backup/export, schema versioning, data-backup module) exists in the bundle but our instance diverged before those were added. The product features (warm intros, angel rendering, round-scoped URLs) are all present in our instance.
| Feature | Source | Status |
|---|---|---|
| Warm Intros tab with full data model | PR #298 + #340 | Shipped |
| Warm intro columns: Evidence, Willingness, Priority, Forwardable | PR #340 | Shipped |
| DELETE + bulk POST /api/warm-intros | PR #340 | Shipped |
| Canonical FKs: connector_person_id, target_person_id, target_firm_id | PR #340 | Shipped |
| connector_willingness enum | PR #340 | Shipped |
| Status lifecycle: identified, permission-requested, approved, sent, accepted, declined, no-response | PR #340 | Shipped |
| Round-scoped URLs (/ | PR #289 | Shipped |
| Legacy URL 301 redirects | PR #289 | Shipped |
| Solo angel rendering (person monogram, "Angel" tag) | PR #341 | Shipped |
| isIndividualInvestorType() shared helper | PR #341 | Shipped |
| One candidate per firm (not per partner) | PR #339 | Shipped |
| Soft-circle as a commitment state | PR #213 (original) | Shipped |
| Task list on Today page | Custom build | Shipped |
| 14 FOS skills installed | Bundle skills | Shipped |
| 8 heartbeat tasks running | Bundle heartbeats | Shipped |
| 27 database tables | Full schema | Shipped |
What the PR does: Makes soft circle a first-class pre-commitment, separate from the real commitment pipeline (verbal → signed → wired).
Our current state: Our round bar folds soft circle INTO committed: committed = totals.soft + totals.signed + totals.wired. This overstates how full the round is.
What we need:
soft_circle_amount field (stored separately, not on the committed ledger)Note from PR: "The live fundraising instance already has this shipped and verified; this PR brings the same construct back into the product bundle." However, our instance still uses the old calculation.
What the PR does:
GET /api/my/export, POST /api/my/import, GET /api/my/parts, POST /api/my/parts/export, POST /api/my/parts/importdata-backup.ts merge engine with 16 unit testsOur current state: No backup/export/import endpoints. No SCHEMA_VERSION tracking. No DATA_TABLES constant. No data-backup.ts module. Settings page has no import/export UI.
What the PR does: Full-fidelity self-describing data backup with schema versioning (zero data loss). This is the infrastructure that PR #343 builds on.
Our current state: No SCHEMA_VERSION in our store.ts. No data backup envelope. This merged PR's infrastructure is a prerequisite for the import/export feature.
What the PR does: A central round projector that computes Today page stats directly from the database records, rather than relying solely on heartbeat items.
Our current state: Today page gets its data from store.ledgerTotals(), store.getLatestHeartbeat(), store.getDraftsForRound(), and store.getTodos(). No round projector.
Impact: The Today page may show stale data between heartbeat runs. A projector would derive fresh stats on every page load.
These PRs are open on the main repo and represent features in various stages of review:
| PR | Title | We Have It? | Action Needed |
|---|---|---|---|
| #345 | Soft circle as distinct construct from commitment | Partially | Need: separate round bar, soft_circle_amount field, skill rule update |
| #343 | Additive import/export in Settings + warm_intros backup | No | Need: data-backup.ts, export/import endpoints, Settings UI, SCHEMA_VERSION |
| #341 | Render solo angels as person on Round tab | Yes | Already shipped in our instance |
| #340 | Align Warm Intros tab with product spec | Yes | Already shipped in our instance |
| #336 | Version Packages (release automation) | N/A | CI/release infra, not a product feature |
Our instance has diverged in ways that may be worth contributing back:
| Feature | Details |
|---|---|
| Custom warm intro columns already live | Evidence, Willingness, Priority, Forwardable columns are in our deployed Network tab. PR #340 brings these to the bundle. |
| Angel rendering fix already live | isIndividualInvestorType + personLogoCell already in our code. PR #341 brings it to the bundle. |
| Vishal's connections map (507 contacts) | Ingested into notebook for outreach and relationship mapping. Not a bundle feature, but unique to our instance. |
| vishal-cos-style skill | Personal COS working preferences for email drafting and investor communications. |
| Skill | Status | Notes |
|---|---|---|
| boo-fundraising-os (orchestrator) | Installed | 15 files including shared references |
| commitment-ledger | Installed | May need update for soft circle distinction |
| competitor-map | Installed | |
| conflict-assess | Installed | |
| conversational-edit | Installed | May need "committed or soft circle?" rule |
| draft-outreach | Installed | |
| fundraise-activate | Installed | |
| heartbeat-compose | Installed | |
| import-mapper | Installed | |
| intro-path | Installed | |
| investor-longlist | Installed | |
| investor-research | Installed | |
| meeting-brief | Installed | |
| workspace-seed | Installed |
| Task | Schedule | Status |
|---|---|---|
| chief-of-staff-daily | Daily at 6:00 AM | Active |
| commitment-reconcile | Daily at 7:00 AM | Active |
| competitor-monitor-daily | Daily at 5:00 AM | Active |
| cost-rollup | Daily at 3:00 AM | Active |
| eval-regression | Mondays at 9:00 AM | Active |
| profile-refresh | Mondays at 4:00 AM | Active |
| relationship-sync | Every 4 hours | Active |
| weekly-rollup | Mondays at 8:00 AM | Active |
render/strip.ts roundStrip to show Committed and Soft circled as separate numbersRemaining = target - committed (where committed = verbal + signed + wired, NOT soft)soft_circle_amount field to candidates or a new storage path/api/my/export, /api/my/import, /api/my/partsboolabinc/boo-brain repo, but cannot read file contents or repository structure. This analysis was built by cross-referencing PR descriptions, our deployed source code, and the installed skills. To do a line-by-line diff, the GitHub connection would need org-level repository content access. An alternative: clone the repo locally and share the relevant files.