zsty.us

Before / After · Case Study

Ballair / Fuel First / 7Air — operating-group brochure + allowlist admin + federal bid agent

  • Aviation

Stood up the digital footprint for a three-entity aviation operating group: Fuel First International (fueling + bunker, CAGE 77SM4), Ballair Aviation Holdings (Boeing 767F + holding entities), and 7Air Cargo (three 737-800SFs, FAA Part 121, acquired May 2026). The deliverable is three layers: a public brochure at ballairaviation.com, a hard-allowlist admin dashboard for the operator, and an Anthropic-backed federal-bid drafting agent that scouts SAM.gov on the operating-group's real CAGE/UEI and drafts compliant bid sections without ever inventing a capability or auto-submitting.

A 24/7 federal-bid agent that runs on the operating group's real CAGE — never invents a cert, never auto-submits.
🔒jackiej.events
jackiej.events — modern site

Receipts — measured

Numbers that moved.

0 days
Cycle from empty repo → drafting agent live
was 0 days
0
Federal entities under one ops surface
was 0
0
SAM keyword-scope categories
was 0
0
Bid sections drafted per click
was 0
  • 3 federal entities under one ops surface
  • 28 SAM.gov keyword-scope categories — one-click into live searches
  • Drafting agent: 7 bid sections, Anthropic-backed, hard never-invent rules
  • Allowlist admin: zero signup surface, sessions in Postgres

Architecture

One chain replaced by another. Receipts above.

Old stack
  • Three LLCs, no public surface
  • SAM.gov spreadsheet
  • Bid drafts from scratch
  • Manual outbound email
New stack
  • ballairaviation.com (static + serverless)
  • ballair-admin.vercel.app (Next.js + NextAuth)
  • Prisma + Postgres (Railway)
  • SAM.gov v2 API + Boolean keyword scope
  • Anthropic Claude (drafter, 7 sections)
  • AWS SES + SNS (messaging hub)
  • Cloudflare Email Routing (inbound)

What changed

Grouped by what kind of system shipped.

Each claim ships with concrete evidence — env vars, table names, cadence chips. No marketing fluff.

Agent backbone

SAM.gov scout — runs on the operating group's real CAGE/UEI

`lib/sam-gov.ts` queries SAM.gov Opportunities API v2 with the operating group's registered API key (tied to CAGE 77SM4, UEI LR94Z4RUN2T5). A single tuned Boolean keyword scope — `BALLAIR_KEYWORD_SCOPE` — covers 25+ aviation and fuel terms targeted at the work Brendon actually bids: Interior/IBC on-call fixed-wing (140D-prefix BIA notices), DLA Energy fueling, USTRANSCOM channel missions, USPS contract air mail, FEMA/USAID humanitarian, CRAF Seg II.

Before
Spreadsheet of SAM.gov tabs, refreshed by hand. Opportunities discovered after the response deadline ran out.
After
Auto-fed Postgres table sorted by responseDeadLine; red banner inside 21 days; one-click into a live SAM.gov search for any of 28 categories.
  • Endpoint: api.sam.gov/opportunities/v2/search (1000 req/hr per key)
  • Pagination handled by the lib; results post into the Postgres opportunities table
  • Source links rewritten through Google `site:sam.gov` to dodge the SAM.gov 404 quirk
  • Scheduled task fans out 28 keyword-scope categories on a weekly cadence
Agent backbone

Drafter — Anthropic-backed, with explicit never-invent rules

`lib/drafter.ts` is an Anthropic SDK call with a system prompt that bakes six immutable rules: never invent capabilities/certs/contracts/pricing/personnel/insurance; render TBD profile fields as `[TBD — Brendon to confirm]`; surface capability mismatches as `[CAPABILITY GAP — Brendon to address: ...]` rather than glossing; never insert pricing numbers; never claim a cert not held in the profile; **never auto-submit** — the drafter writes, the human submits at SAM.gov.

Before
Bid sections written from scratch each time. Risk of accidentally claiming a cert that wasn't held.
After
Section-scoped drafts grounded in a typed CompanyProfile. Capability gaps surface explicitly; pricing structurally placeholder; submission stays human.
  • 7 sections drafted independently: executive summary, technical, past perf, management, pricing notes, reps & certs, submission checklist
  • Each section has its own length budget + structural instructions (e.g. technical = 600-1200 words with named subheadings)
  • Voice tuned for federal proposal standard — active, direct, no marketing fluff
  • DraftPanel.tsx UI shows last-generated timestamp + model per section
Retention

Honesty pass — demo rows flagged, then wiped, scope tuned to real engagement

Initial seed pulled 41 federal opportunities from SAM but the operator only engages a fraction. Day-1 honesty fix: every unverified row got an `isDemo` flag + visible UI banner. Day-3: the demo rows were wiped, the keyword scope was retuned against the categories that actually drove bids. The opportunities surface only shows real, recently-pulled rows now.

  • Commit `17a3ddc` — Honesty pass: mark all unverified opportunities as isDemo + UI banner
  • Commit `06d3ba6` — Wipe demo opportunity rows, tune keyword scope from real engagement
  • Operator pattern: ship loud, mark anything uncertain visibly, prune the noise within days
Retention

Hard allowlist — no signup surface, by design

Magic-link sign-in requests for any email not on `ADMIN_EMAILS` are silently rejected. No add-user UI. Sessions live in Postgres so revoking access is a single row delete. Switched to JWT session strategy so edge middleware can validate auth at the same level as the page renderer.

Real-time push

Messaging hub — opt-in subscribers, consent audit, RFC 8058 one-click unsubscribe

AWS SES + SNS messaging stack added in the same admin: opt-in subscribers table, consent audit log on every send, RFC 8058 `List-Unsubscribe` + `List-Unsubscribe-Post` header pairs for one-click unsubscribe in Gmail/Apple Mail. Webhook handler now stops silently swallowing SubscribeURL fetch failures.

  • Commit `04dcd71` — Add messaging hub: opt-in subscribers, SES email, consent audit, RFC 8058 unsub
  • Commit `b9e5c4a` — Honor body.sourceAppId on admin-authed sends
  • Commit `b65fe22` — Stop silently swallowing SubscribeURL fetch failures in SES webhook

While she sleeps.

Autonomous surfaces

The agent backbone keeps the brand earning between gigs. Jackie approves; the system runs.

  • Pulls fresh SAM.gov opportunities through the operating group's CAGE/UEI

    weekly (scheduled task)

    Scheduled SAM.gov v2 API queries fan out the 28-category keyword scope on a weekly cadence; results land in Postgres sorted by responseDeadLine. The agent runs as the operating group — not as a third-party scraper.

  • Drafts 7 bid sections per opportunity, on demand

    per opportunity, on the operator's click

    DraftPanel in the admin generates Executive Summary / Technical / Past Performance / Management / Pricing Notes / Reps & Certs / Submission Checklist — each with its own length budget, structural instructions, and federal-proposal voice.

  • Flashes a red banner inside the SAM expiration cliff

    every page render

    Home page surfaces a 21-day countdown to SAM.gov registration expiration. Verify / Renewal-Initiated / Renewal-Submitted state buttons track the renewal workflow without leaving the admin.

  • Fires consent-audited outbound messaging through SES

    on each send

    Messaging hub logs every send with consent state + sourceAppId; RFC 8058 one-click unsubscribe lands in Gmail and Apple Mail natively.

← All rebuilds

Ballair / Fuel First / 7Air — operating-group brochure + allowlist admin + federal bid agent — zsty.us