Example: Government Contracts Pipeline
This crew monitors GovWin for government contracts relevant to Stilo Solutions, shortlists the best opportunities, and drafts the full bid package — proposal, technical approach, and supporting documents — ready for human review before submission.
What it does
GovWin search URL
│
▼
┌─────────────────┐
│ Contract Scout │ Scrapes GovWin, filters by Stilo's capabilities,
│ │ extracts key requirements
└────────┬────────┘
│ shortlist + requirements
▼
┌─────────────────┐
│ Fit Analyst │ Scores each contract: incumbent risk, competition,
│ │ win probability, estimated effort
└────────┬────────┘
│ scored + ranked shortlist
▼
┌─────────────────┐
│ Proposal Writer │ Writes full proposal for top contracts:
│ │ executive summary, technical approach, staffing plan
└────────┬────────┘
│ draft proposals
▼
┌─────────────────┐
│ Doc Assembler │ Organises all documents into a submission folder
│ │ in Obsidian, flags missing items for human review
└─────────────────┘
│
▼
~/obsidian/contracts/
├── shortlist.md
├── scored-opportunities.md
└── proposals/
├── proposal-W52P1J-24-R-0001.md
└── proposal-FA8771-24-R-0005.mdSetting it up
1. Create the project
bash /srv/shared/projects/new-project.sh research-crew govwin-pipeline
cd ~/projects/govwin-pipeline
source .venv/bin/activate2. Write a company profile note
Create ~/obsidian/company/stilo-profile.md in Obsidian with:
# Stilo Solutions — Capability Profile
## Core capabilities
- Custom software development (web, mobile, embedded)
- IT infrastructure and cloud (AWS, Azure)
- Systems integration
- Video surveillance and physical security systems
- Data engineering and analytics
## NAICS codes
541512 — Computer Systems Design Services
541519 — Other Computer Related Services
561621 — Security Systems Services
## Contract vehicles
- GSA MAS (Schedule 70)
- SeaPort-NxG
## Past performance
- [Add examples here]
## Team size
- [Current headcount and key disciplines]This note becomes the agent's reference for deciding which contracts fit.
3. Configure .env
SCOUT_MODEL=qwen3-general
ANALYST_MODEL=claude-sonnet
WRITER_MODEL=claude-sonnet
ASSEMBLER_MODEL=qwen3-general
OBSIDIAN_VAULT=/home/yourname/obsidian
LITELLM_BASE_URL=http://localhost:4000/v1
LITELLM_API_KEY=sk-... # from ~/.config/litellm/key4. Add a GovWin login tool
GovWin requires authentication. Create
src/govwin_crew/tools/govwin.py:
import os
from crewai.tools import BaseTool
from playwright.sync_api import sync_playwright # or use httpx with session cookies
class GovWinSearchTool(BaseTool):
name: str = "Search GovWin"
description: str = (
"Search GovWin IQ for government contract opportunities. "
"Input: a search query or NAICS code."
)
def _run(self, query: str) -> str:
# Use your GovWin credentials from environment variables
username = os.environ["GOVWIN_USERNAME"]
password = os.environ["GOVWIN_PASSWORD"]
# Implement login + search using httpx with session handling
# or Playwright once Ubuntu 26.04 support is added
# For now: use WebScrapeTool with a pre-authenticated session cookie
raise NotImplementedError(
"Add GovWin session cookie to GOVWIN_SESSION env var and implement here"
)Add to .env:
GOVWIN_USERNAME=your@email.com
GOVWIN_PASSWORD=yourpasswordNote: Playwright (full browser automation) is not yet supported on Ubuntu 26.04. Until it is, use GovWin's export feature to download a CSV of opportunities and point the scout agent at a local file instead.
5. Run the pipeline
# Point at an exported GovWin search results file
PYTHONPATH=src python -m govwin_crew.main "~/obsidian/contracts/govwin-export.csv"
# Or with a direct URL once Playwright is available
PYTHONPATH=src python -m govwin_crew.main "https://iq.govwin.com/neo/oppSearchCriteria/..."Check your Obsidian vault — results appear in contracts/ within minutes.
Customising for your pipeline
Add a compliance checker agent
def compliance_checker() -> Agent:
return Agent(
role="FAR Compliance Reviewer",
goal="Verify that proposals comply with FAR/DFARS requirements and solicitation instructions.",
backstory="You are a contracts attorney with 15 years of federal procurement experience.",
tools=[ObsidianReadTool(), ObsidianWriteTool()],
llm=_llm("claude-opus"), # use the strongest model for legal review
)Schedule it to run weekly
Add a cron entry on the server:
crontab -e
# Add:
0 7 * * 1 cd ~/projects/govwin-pipeline && PYTHONPATH=src .venv/bin/python -m govwin_crew.main >> ~/obsidian/contracts/run.log 2>&1Every Monday at 7am the crew runs, updates your shortlist, and the results sync to your Obsidian on your desktop before you start work.