# Beyta / Kenya NGO prospect mining — progress tracker

Source: `source_documents/COMPLIANT-NGOs-AS-AT-JANUARY-9-2024.pdf` — Kenya NGO
Coordination Board's "Compliant NGOs as at 9th January 2024" list. **3742
entries total**, numbered #1-3742, ~43.7 entries per page across 86 pages
(page 1 starts at #1, page 86 ends at #3742).

This file is the single source of truth for where the next scheduled run
should continue from. **Always read this file first, and update it (last
line + the batch log table) as the last step before committing.**

## Status

- **Last completed entry number: 2300**
- **Next run starts at: 2301**

## How each run should work

1. Read this file to get "Next run starts at: N".
2. Target the next 100 entries: N through N+99 (adjust down near the end —
   see "Remaining" below — the last batch may be shorter).
3. Estimate the page range at ~43.7 entries/page (page ≈ N / 43.7), but
   **verify against the actual printed numbers on the page, not page
   position** — read a page or two of buffer on either side and only
   include entries that fall exactly in the target range.
4. For each NGO name, research a real, verifiable contact using this order:
   a. Official website (search org name + "Kenya").
   b. Google search for any credible mention - news, a directory/registry
      listing, a funder's grantee list, GlobalGiving/DevelopmentAid/Devex,
      Wikipedia, etc.
   c. Public social media (Facebook/X/Instagram/LinkedIn) clearly belonging
      to this specific org - an email/phone in its About/Info section
      counts as a valid contact.
   Only include an entry if genuinely confident it's the real, current,
   correct org. If plausible-but-uncertain, you may include it but prefix
   the seed script's `notes` field with `NEEDS REVIEW: ` explaining why,
   AND append it to `docs/BEYTA_NGO_NEEDS_REVIEW.md` (see that file's own
   format). Never fabricate a website or email. Most entries will have no
   findable presence at all - that's expected, skip them (don't add a
   Prospect row for names with nothing found).
5. Write a new seed script: `scripts/seed-beyta-ngo-prospects-batchNN.js`
   (NN = next sequential batch number - batch 01 was entries 1-100, so the
   next one is batch 02, etc.) - copy the structure/style of
   `scripts/seed-beyta-ngo-prospects.js` (batch 01) exactly: same
   `SOURCE`/`SECTOR` constants, same findOrCreate-based upsert logic, same
   comment header style. Sector stays `'NGO (Beyta SaaS)'`.
6. Add the matching npm script to `package.json` (`"db:seed-beyta-ngo-batchNN": "node scripts/seed-beyta-ngo-prospects-batchNN.js"`).
7. Update this file: bump "Last completed entry number" and "Next run
   starts at", and add a row to the Batch log table below.
8. **Do NOT attempt to SSH anywhere or touch any live database.** This
   cloud environment has no access to the production server - it can only
   research, write files, and commit/push to this repo. Loading each
   batch's seed script into the actual live CRM is done separately
   (by the project owner or in an interactive Claude Code session with
   server access).
9. `git add` the new seed script, the package.json change, this file, and
   the needs-review doc if it changed. Commit (message like "Add Beyta NGO
   prospects batch NN (entries N-M)") and push to `origin main`.

## Remaining

3742 total - 2300 done = **1442 remaining** as of the last update to this
file. At ~100/run, that's roughly 14-15 more runs.

## Batch log

| Batch | Entries | Seed script | Status |
|---|---|---|---|
| 01 | 1-100 | scripts/seed-beyta-ngo-prospects.js | Done, seeded into live CRM (51/100 had a usable contact) |
| 02 | 101-200 | scripts/seed-beyta-ngo-prospects-batch02.js | Done, not yet seeded into live CRM (63/100 had a usable contact, 12 of those flagged NEEDS REVIEW) |
| 03 | 201-300 | scripts/seed-beyta-ngo-prospects-batch03.js | Done, not yet seeded into live CRM (58/100 had a usable contact, 13 of those flagged NEEDS REVIEW) |
| 04 | 301-400 | scripts/seed-beyta-ngo-prospects-batch04.js | Done, not yet seeded into live CRM (60/100 had a usable contact, 22 of those flagged NEEDS REVIEW; 1 additional match skipped as a duplicate of a batch 03 entry) |
| 05 | 401-500 | scripts/seed-beyta-ngo-prospects-batch05.js | Done, not yet seeded into live CRM (52/100 had a usable contact, 18 of those flagged NEEDS REVIEW) |
| 06 | 501-600 | scripts/seed-beyta-ngo-prospects-batch06.js | Done, not yet seeded into live CRM (50/100 had a usable contact, 19 of those flagged NEEDS REVIEW) |
| 07 | 601-700 | scripts/seed-beyta-ngo-prospects-batch07.js | Done, not yet seeded into live CRM (53/100 had a usable contact, 25 of those flagged NEEDS REVIEW) |
| 08 | 701-800 | scripts/seed-beyta-ngo-prospects-batch08.js | Done, not yet seeded into live CRM (38/100 had a usable contact, 5 of those flagged NEEDS REVIEW; lower yield than usual - this page range is dominated by generic, small grassroots "COMMUNITY ..." names with little to no public presence) |
| 09 | 801-900 | scripts/seed-beyta-ngo-prospects-batch09.js | Done, not yet seeded into live CRM (55/100 had a usable contact, 22 of those flagged NEEDS REVIEW; entries #876/#877 are a duplicate registry listing of the same org name - no presence found for either, both skipped) |
| 10 | 901-1000 | scripts/seed-beyta-ngo-prospects-batch10.js | Done, not yet seeded into live CRM (55/100 had a usable contact, 19 of those flagged NEEDS REVIEW) |
| 11 | 1001-1100 | scripts/seed-beyta-ngo-prospects-batch11.js | Done, not yet seeded into live CRM (47/100 had a usable contact, 19 of those flagged NEEDS REVIEW; lower yield than usual - this page range is dominated by generic small "EMPOWERMENT ..."/"ENVIRONMENTAL ..." names and single-founder personal foundations with little to no public presence) |
| 12 | 1101-1200 | scripts/seed-beyta-ngo-prospects-batch12.js | Done, not yet seeded into live CRM (60/100 had a usable contact, 20 of those flagged NEEDS REVIEW; includes both FAWE's regional secretariat (#1149) and its separate Kenya Chapter (#1150) as distinct entries) |
| 13 | 1201-1300 | scripts/seed-beyta-ngo-prospects-batch13.js | Done, not yet seeded into live CRM (59/100 had a usable contact, 34 of those flagged NEEDS REVIEW - higher-than-usual review rate, driven by a page range dominated by international/foreign-parent orgs with Kenya programs (German government-linked bodies, UN/UCSF-affiliated bodies, US/UK/Korea/Australia parent charities) where only HQ or global contact info could be confirmed rather than a distinct Kenya office line) |
| 14 | 1301-1400 | scripts/seed-beyta-ngo-prospects-batch14.js | Done, not yet seeded into live CRM (46/100 had a usable contact, 13 of those flagged NEEDS REVIEW; entry #1378 "Habitat for Humanity in Kenya" was a duplicate registry listing of "Habitat for Humanity Kenya Ltd" already seeded in batch 01 - skipped rather than re-added) |
| 15 | 1401-1500 | scripts/seed-beyta-ngo-prospects-batch15.js | Done, not yet seeded into live CRM (57/100 had a usable contact, 23 of those flagged NEEDS REVIEW; this page range is dominated by international/parent-org Kenya programs - HelpAge, Heifer, Help a Child, Hope and Homes for Children, etc. - where often only global/regional HQ contact info could be confirmed rather than a distinct Kenya-only line) |
| 16 | 1501-1600 | scripts/seed-beyta-ngo-prospects-batch16.js | Done, not yet seeded into live CRM (60/100 had a usable contact, 18 of those flagged NEEDS REVIEW; page range spans "Horn of Africa..." orgs (several international/foreign-parent Kenya programs) through the start of the "I"/"Impact"/"Independent"/"Initiative..." names, including a notable number of US-501(c)(3)-registered charities with Kenya field programs) |
| 17 | 1601-1700 | scripts/seed-beyta-ngo-prospects-batch17.js | Done, not yet seeded into live CRM (61/100 had a usable contact, 19 of those flagged NEEDS REVIEW; page range is dominated by the alphabetical "Institute.../Integrated.../Inter-/International..." block, with a heavy cluster of genuine international NGOs' Kenya country programs - IRC, IJM, IFES, IRI, Interpeace, IntraHealth, INSO, IsraAID, INTERSOS, IIRR, Ipas, IESC, International Medical Corps - alongside many small/obscure local NGOs, especially #1615-1632 and #1692-1700, with zero online footprint beyond the government PDF listing itself) |
| 18 | 1701-1800 | scripts/seed-beyta-ngo-prospects-batch18.js | Done, not yet seeded into live CRM (52/100 had a usable contact, 13 of those flagged NEEDS REVIEW; page range covers the tail of the alphabetical "J..." block (Jakim...Juba Valley/Jubilant/Justice) through the start of "K..." (Kagey...Kenya Homeless), dominated by generic small "JOY.../JITEGEMEE.../JIWEZE..." Christian/community names and single-founder foundations with little to no public presence, plus a cluster of well-documented national umbrella/association NGOs in the #1785-1800 range - KALA, KAACR, KARE, KAIH, KAWE, KAPC, Kenya Connect, Kenya Education Fund, Kenya Good Neighbors, etc.) |
| 19 | 1801-1900 | scripts/seed-beyta-ngo-prospects-batch19.js | Done, not yet seeded into live CRM (70/100 had a usable contact, 11 of those flagged NEEDS REVIEW; page range covers "KENYA..." national/umbrella orgs (Human Rights Commission, Land Alliance, KELIN, KWAHO, KVDA, KENDAT, KENWA, KeNAAM, etc.) through the start of the "KI..." block (Kibera, Kickstart, Kijani, Kisumu, Kitui, Kiwimbi, etc.), with a notably higher-than-usual yield driven by many well-established national NGOs and acronym-branded orgs in the #1801-1830 range) |
| 20 | 1901-2000 | scripts/seed-beyta-ngo-prospects-batch20.js | Done, not yet seeded into live CRM (65/100 had a usable contact, 24 of those flagged NEEDS REVIEW; page range covers the tail of the "KO/KU..." block through "L.../LI.../LIVING..." names, with a heavy cluster of small single-org Christian/community charities and several international-parent-org Kenya field programs (Lahash, LM International/Lakarmissionen, LVIA, Last Mile4D, Liverpool School of Tropical Medicine, Living Water International) where only parent-org or unverified Kenya-branch contact info could be confirmed) |
| 21 | 2001-2100 | scripts/seed-beyta-ngo-prospects-batch21.js | Done, not yet seeded into live CRM (61/100 had a usable contact, 19 of those flagged NEEDS REVIEW; page range covers the tail of "LO.../LU..." names through the start of the "MA/MAN/MAR/MAS/MAT/MAZ/MED..." block, including a notable cluster of well-documented health-focused orgs (LVCT Health, Marie Stopes Kenya, Mazingira Institute) and four distinct Medecins Sans Frontieres operational-section Kenya offices (Holland/OCA, Switzerland, Belgium, France) treated as separate entries) |
| 22 | 2101-2200 | scripts/seed-beyta-ngo-prospects-batch22.js | Done, not yet seeded into live CRM (53/100 had a usable contact, 12 of those flagged NEEDS REVIEW; page range covers the tail of the "MED..." block through the start of the "MU..." block (Medical Response.../MSF Spain through Multi Touch International), dominated by many generic small "MISSION.../MOUNTAIN.../MT..." Christian/community names and single-founder foundations with little to no public presence, alongside a solid cluster of well-documented national and Nairobi-slum-focused NGOs - Mercy Corps, Missions of Hope International, Mukuru Slums Development Project, Movement of Men Against AIDS in Kenya, Mpala Research Centre) |
| 23 | 2201-2300 | scripts/seed-beyta-ngo-prospects-batch23.js | Done, not yet seeded into live CRM (63/100 had a usable contact, 20 of those flagged NEEDS REVIEW; page range covers the tail of the "MU..." block (Mumias Kids Centre) through the start of the "NG..." block (Ngangani Acts Community Development), spanning the alphabetical transition from "MW..." to "NA/NE..." names - a solid cluster of well-documented national/network orgs (Namati Kenya, NDI, NEPHAK, NOPE, KeNRA, NECOFA, NEFOS, NASAC, National Christian Youth Network) alongside many small Christian/community "NEEMA...", "NETWORK FOR...", and single-founder foundation names, several of the latter with international parent-org contacts only) |
