Project Lookout: A Platform for Black Economic Mobility

Project Lookout
Procurement intelligence · powered by BECMA
Portfolio · case study

Helping a member network find the funding that’s already out there.

“Find your funding. Find your footing. Find your future.”

Big companies win public funding because they can afford whole business-development teams to find and chase it. Project Lookout gives that same firepower to the underserved and underestimated Black and Brown small businesses and nonprofits who can’t — finding every grant, contract, and RFP across MA and the federal government, and matching each to the businesses it fits. An orchestra of people, code, and AI each do their part. I led the design, development, testing, deployment, and project management, alongside Chris Hope and Yunzi Wan at The Hope Group, with the Black Economic Council of Massachusetts — free for its members.

85+
targeted sources
6
automated jobs
~2 min
per live search
1,400+
automated tests
See it in motion

A quick overview of the product.

Project Lookout demo video
What it is

One place for the whole hunt.

Project Lookout is a procurement-intelligence platform for the members of BECMA. It runs a deep, grounded AI sweep across 85+ procurement, grant, and job-listing sources every day, verifies every link, reads each posting into clean facts, and scores each opportunity against a member’s real business profile with a transparent, explainable formula.

The result is a personal, ranked feed where every match shows why it fits — and what’s missing — plus a daily email digest, plain-language search, AI tools that read complex RFPs, and a pipeline that tracks a lead from first sighting to won contract. It’s free for members, where the tools it replaces cost around $12,000 a year per seat.

AICivic techFull-stack Product designMulti-tenant SaaSGoogle Cloud
Inside the platform

What it does — try it.

Not a static database — a working teammate. These are the real features, mocked up live. Click through them.

Interactive mock — scores and links look exactly like this in a member’s real feed.

The why

Funding shouldn’t be a maze.

The money is out there. The problem is discovery — it’s scattered across dozens of portals, buried in PDFs, and changes every day.

Small businesses and nonprofits lose real opportunities simply because no one has the hours to hunt them down. The tools that solve this are static databases priced for organizations that already have money — and each is locked to a single lane: one for nonprofits, another for government procurement, another for construction bids.

Project Lookout flips that: one place, every lane, matched to you, and free for the network.

The idea that makes “free” possible is search once, match many. The expensive way to build this is one AI search per member — costs balloon, and you end up priced like the incumbents. Lookout instead sweeps every source once a day into one shared, verified opportunity pool, then matches that pool against every member’s profile.

AI cost scales with sources, not members. That’s the whole reason it can serve an entire network for free — and it’s a fairness property too: everyone is matched against the same complete pool, ranked by the same transparent formula.

Goals

What it had to achieve.

01

Make discovery effortless

Replace a full-time hunt across dozens of portals with one ranked feed and a morning digest — matched to each business, in English or Spanish.

02

Earn trust with transparency

Every match explains itself, including the misses. Every link is verified or honestly labeled. No black boxes, no ghost bids.

03

Serve a whole network for free

Architect the AI so cost scales with sources, not members — so an entire member network gets what used to cost $12k a seat.

04

Level the playing field

Do the work of an expensive business-development team overnight, so historically underestimated businesses can compete in the same ballpark as the big players.

05

Keep the data the network’s

Never train on member data, never cross tenants, support full export and certified deletion, audit-log every access.

06

Build to grow

Multi-tenant from day one — BECMA is tenant #1, but the platform is built to onboard any member network next.

Challenges

The hard problems — and how we solved them.

The interesting engineering is invisible when it works. Here’s what it took. (Tap to expand.)

TrustAI invents plausible links that don’t exist

Grounded language models happily generate deep URLs that look real but 404 — a fatal flaw for a tool people use to find live bids. A “ghost bid” destroys trust instantly.

The fix

A verify → corroborate → fall-back pipeline is the moat. Every candidate URL is HTTP-checked before it’s ever labeled verified; when a deep link can’t be confirmed, the system says “portal link” and routes to the real portal instead of inventing one. Deep-dive enrichment can never re-promote an unverified link. The honesty is enforced in code, not hoped for.

FairnessA score you can check, not a black box

Ranking opportunities with an LLM is easy — and wrong. It’s unexplainable, non-reproducible, and can quietly encode bias against the very businesses the platform exists to serve.

The fix

Scoring is fully deterministic: a five-factor formula with versioned weights, computed in transparent code. Every factor carries plain-English evidence — including misses (“you don’t have WOSB on file”). A standing accuracy-and-bias test suite gates every release: swapping a business’s name never changes its score, and holding a certification can never lower one. A red run blocks delivery.

ScaleOut-of-memory crashes at network scale

Matching a growing pool of opportunities against every member, several searches at once, kept crashing the container out of memory — because the feed loaded full opportunity records, each dragging a heavy semantic-search embedding vector and raw AI text.

The fix

A hard rule emerged: never load full opportunity entities at tenant scale. Heavy blob columns are deferred, queries project only the columns they need, and vector ranking runs through an in-process cache and a numpy matrix instead of per-row fetches. Search latency dropped from seconds to sub-second, and the crashes stopped.

SecurityPrompt injection from the open web

The system reads untrusted text from across the web. A malicious posting could try to talk the AI into promoting a phishing link or fabricating a set-aside a member doesn’t qualify for.

The fix

Defense in depth: a registered-portal host is the only attacker-independent trust signal, untrusted text is delimiter-fenced before it ever reaches a prompt, and fact extraction is code-enforced to accept only explicitly stated set-asides, NAICS codes, and values. The assistant can’t be argued into a claim the source text doesn’t literally support.

ReliabilityOne outage shouldn’t lose a day’s work

A daily sweep runs unattended for up to 30 minutes across three container instances. A restart mid-run, a naive-timezone deadline, or two instances starting the same paid sweep could each silently corrupt a day.

The fix

Cross-instance mutual exclusion via Postgres advisory locks, orphaned-run recovery on boot, timezone-hardened deadline parsing, durable per-phase stats so a killed run keeps its verified counts, and failure alerts routed to a real inbox. The system fails safe and heals itself.

CraftPlain language for a jargon-heavy domain

Public procurement is a wall of acronyms — SDO, DCAMM, DBE, set-asides, NAICS. The people who most need this tool are the least served by that jargon.

The fix

Plain language is a first-class requirement, not polish. Scores explain themselves, options say what they cost (“a deep search takes about two minutes”), and the whole app is bilingual English/Spanish with a warm light theme, a rich dark theme, real mobile navigation, and measured accessibility — screen-reader announcements, keyboard-operable dialogs, contrast checked in both themes.

The work behind every card

A quiet mountain of labor, so the feed looks simple.

Every clean, scored card is the end of an assembly line that runs while members sleep — scrape, ingest, search, verify, extract, de-dup, score.

Sources

85+ MA, federal & supplier-diversity portals + the open web

1

Feeds & scrapes

Nightly direct pipes: SAM.gov, Grants.gov, COMMBUYS — $0

2

Grounded AI

Gemini + Google Search grounding hunts what feeds miss

3

Verification

Every URL HTTP-checked — verified, or honestly labeled

4

Extraction

AI reads each posting into facts: deadline, value, set-asides

5

Deterministic score

Code computes every score — versioned weights, never whim

6

Your feed

Ranked matches, digest, alerts — with the receipts attached

7
0
targeted sources + open web
0
automated jobs, nightly & weekly
0
per live deep search
0
automated tests guarding it
Development strategy

Ship it in milestones, verify every one.

Project Lookout began as a fork of a single-contractor search engine, which we generalized into a multi-tenant network platform — built in defined milestones, each with a hard definition-of-done, gated by a growing test suite and adversarial multi-agent code review before every deploy. (Pick a milestone.)

Design principles

The values we built by.

Honesty as a feature

Verified or labeled, never faked. Projections say they’re estimates. Misses are shown on purpose — trust is the product.

Plain language first

Scores explain themselves, options say what they cost, jargon gets translated. No one is left behind by acronyms.

Bilingual by default

The entire app, digest, and guided tour in English and Spanish — one toggle, full parity, not an afterthought.

Deterministic fairness

Everyone matched against the same pool by the same transparent formula. No thinner feed for joining late or clicking less.

Accessibility is required

Screen-reader announcements, keyboard-operable modals, measured contrast in both themes, a tour that points rather than hijacks.

The data stays the network’s

Never used to train models, never crossed between tenants, exportable any day, deletable on request, every access audit-logged.

Money at the right end of the equation

$12,000 a seat, or free.

The incumbents are static databases priced for organizations that already have money — and each is locked to one vertical. “Search once, match many” is what lets Lookout do more, for a whole network, for nothing.

Nonprofit grant platform
Gov procurement database
Bid-alert service
Project Lookout
Free
Rollout & deployment

From a laptop to a live, monitored service.

Lookout runs in production on Google Cloud, containerized and migration-driven, behind a custom domain with self-serve auth, scheduled automation, monitoring, and daily backups.

Cloud Scheduler6 cron jobs
Cloud RunFastAPI · us-east4
Cloud SQLPostgres 16
Secret Managerkeys & config
projectlookout.appmanaged SSL
Migration-owned schema

Alembic owns every schema change — no runtime guesswork. Each revision is round-tripped on Postgres before it ships.

Scheduled automation

Nightly link-recheck, feed ingest, and digests; a weekly comprehensive sweep — all authenticated endpoints, no server left running to be killed.

Self-serve auth

Email + password with JWT in httpOnly cookies, invite-only onboarding, password reset, plus Google & Microsoft OAuth — all invite-bound.

Monitored & backed up

A deep health probe, uptime checks, 5xx and out-of-memory alert policies to a real inbox, and automated daily backups with point-in-time recovery — restore-drilled.

Reproducible builds

A multi-stage Docker image built from a hash-pinned lockfile; a gated deploy that reruns the full suite and a Postgres migration round-trip on the same commit.

Domain migration, live

Migrated the canonical domain to projectlookout.app with a 301-forwarding redirect and authenticated SendGrid mail — done without downtime.

Under the hood

The stack.

BackendPython 3.11FastAPISQLAlchemy 2Alembic
DataPostgreSQL 16Cloud SQLVector searchJSONB config
AIGoogle GeminiSearch groundingFacet extractionProposal drafting
FrontendReact 18ViteTailwind CSSEN / ES i18n
PlatformDockerCloud RunCloud SchedulerSendGrid
Credits

A team effort.

Project Lookout is a small team’s work — and a collaboration that inspired it.

Designed & developed by
Stephen Walter
Produced by
Chris Hope
Quality tested by
Yunzi Wan

Owned & operated by The Hope Group / Equity Intelligence, LLC · powered by the Black Economic Council of Massachusetts, which provides it to its member network · inspired by a collaboration with Nicole Wiggins of JEWN Enterprises.

Want to see Lookout work on real opportunities?

The live product is running now. Happy to walk your team through a live search and a member feed — or talk about how it was built.

Project Lookout · a case study by Stephen Walter · more work →
Next
Next

The Community AI Project