← dashboard

Admin / tech notes dev only

v3.4.4
app version
31
runs stored
4
clients
30
enrich top-N

Environment

LLM modelanthropic/claude-haiku-4.5 (OpenRouter; key present)
Databasepostgres://postgres/n8n - tables grantos_runs, grantos_clients
Data sourcesGrants.gov search2 (federal, live) · CA Grants Portal via data.ca.gov (state, live) · ProPublica Nonprofit Explorer (foundation prospects, IRS data) · LLM lane scout (corporate/community, speculative) · ProPublica org financials + 990 PDFs (foundation intel, cached 7d) · client sites (concierge)
Hostsrv1594707 sidecar /docker/grantos-prime - Traefik + LE - repo github.com/loscodosmuchos/grantos

Scoring model (deterministic - LLM never scores)

Version history

v3.4.42026-07-13Fix: hands-off /client/{slug}/run now rebuilds from the current saved profile so category/eligibility/keyword edits take effect (previously replayed the last run’s params). Fixed char-join bug on string keywords.
v3.4.32026-07-13Foundation prospects filtered to real grantmakers (NTEE T-family or community-foundation names; excludes colleges/chambers/hospitals/districts). Per-client category retuning (SMM: HL+ISS+ED, dropped AR/CD noise).
v3.4.22026-07-13Report quality: foundation prospects region-ranked (client metro first, out-of-state dropped) with inline IRS capacity (revenue+year); strategist deadline-feasibility rule (nothing closing <21 days headlined Pursue).
v3.4.12026-07-13POST /client/{slug}/run: hands-off re-run on saved params (JSON out) for n8n scheduled runs.
v3.4.02026-07-13Change-alert backend: /run/{rid}/diff and /client/{slug}/diff (new/dropped/deadline-moved/fit-changed keyed by source_url; ?html=1 alert card). Backbone for weekly scheduled runs.
v3.3.02026-07-13Foundation 990 intel: every prospect gets a financial-intel page (ProPublica/IRS filings: revenue, assets, contributions, 990 PDF links), cached in Postgres. Grant-row XML extraction documented as Phase 3 (IRS S3 index dead; TEOS bulk-ZIP only).
v3.2.22026-07-13CRITICAL FIX: Grants.gov returns award counts/amounts as strings; the divide crashed enrichment for most items, silently degrading every fit score since v2. All numerics now coerced — award $ and applicant types land reliably.
v3.2.12026-07-13Enrichment hardening: retry with backoff + error samples in trace (fixes runs where award/eligibility data silently failed); CA portal items are always carried into the scored shortlist.
v3.2.02026-07-13MULTI-SOURCE: CA Grants Portal (data.ca.gov) searched alongside Grants.gov; foundation prospecting via ProPublica/IRS; LLM corporate-CSR + community-foundation lane scout (labeled speculative). Add-a-client wizard framing. Scoring: foreign-geography penalty, thin-match capped below Possible.
v3.1.02026-07-13Curated operator-research layer (original A-matches persist on every run + report); softer unknown-eligibility penalty (API pre-filter credit); curated cross-match boost; version badge + /admin dev tab.
v3.0.02026-07-13Multi-client profiles in Postgres; LLM concierge intake (URL/description -> profile draft); re-run; mission-gated honest scoring w/ Low match tier; formatted strategist notes; tooltips; visible pipeline strip.
v2.0.02026-07-13Trace-based pipeline, enrichment (award $ / applicant types), fit scoring vs SMM, LLM strategist note, client report export.
v1.0.02026-07-13First deploy: live Grants.gov search2 -> triage -> Postgres ledger + OpenRouter note.

Clients

Orgslugprofile
Soul Medicine Mobilesoul-medicine-mobile6 curated - 14 mission terms - $250,000
Soul Medicinesoul-medicine0 curated - 12 mission terms - $200,000
Satya Wellnesssatya-wellness0 curated - 12 mission terms - $250,000
Soul Medicine Mobilesoul-medicine-mobile20 curated - 12 mission terms - $250,000

Recent runs & errors

RunWhenOrgFitsErrors
#312026-07-14 06:49Soul Medicine Mobile0S / 2P / 12St / 23L-
#302026-07-14 06:48Soul Medicine Mobile0S / 2P / 4St / 31L-
#292026-07-14 06:48Soul Medicine Mobile0S / 2P / 12St / 23L-
#282026-07-14 06:47Soul Medicine Mobile0S / 2P / 7St / 28L-
#272026-07-14 06:47Soul Medicine Mobile0S / 2P / 4St / 31L-
#262026-07-14 06:47Soul Medicine Mobile0S / 2P / 12St / 23L-
#252026-07-14 06:46Soul Medicine Mobile0S / 2P / 4St / 31L-
#242026-07-14 06:46Soul Medicine Mobile0S / 2P / 12St / 23L-

Pipeline stages

Intake / profileQuery expansionGrants.gov search2CA Grants PortalNormalize / dedupeRules triageEnrich detailFit score vs profileAnalyst note (LLM)Foundation prospectsLane scout (LLM)
Intake / profileLoads the client profile: budget, mission terms, geography, eligibility codes.
Query expansionExpands your plain keywords into funder-language synonyms via the taxonomy crosswalk.
Grants.gov search2Federal: every keyword x category combo queried live against the Grants.gov search2 API in parallel.
CA Grants PortalState: same funder-language keywords queried live against grants.ca.gov via the official data.ca.gov API (CA clients).
Normalize / dedupeMerges duplicate hits across queries; drops already-closed opportunities.
Rules triageDeterministic title scoring: mission terms boost, clinical/infrastructure terms penalize, hard excludes drop.
Enrich detailTop 30 get award floor/ceiling, applicant types and synopsis from fetchOpportunity.
Fit score vs profile0-100 score vs THIS client: eligibility gate, award scale vs budget, mission-language overlap.
Analyst note (LLM)LLM writes the strategist note over the scored shortlist. Advisory only — never changes scores.
Foundation prospectsIRS/ProPublica lookup of grantmaking foundations in the client state — verified orgs to cultivate (no open-RFP data).
Lane scout (LLM)LLM suggests named community-foundation / state-local / corporate-CSR lanes. SPECULATIVE — verify before client delivery.