Skip to content

    Thera is capture intelligence for federal contractors, live in production and carrying real pipelines. This case study covers the rule that shaped it, that a recommendation has to be able to say no, the architecture behind an explainable score, and what building against a design partner with revenue at stake changed about the product.

    Problem

    SAM.gov publishes thousands of notices. A small federal contractor can read a few dozen a week. The gap between those two numbers is filled, in most firms, by a spreadsheet and somebody's judgement late in the day, under deadline pressure, about which handful are worth a proposal that costs real hours to write.

    The tools that exist mostly answer the wrong question. They are search engines: they tell you what contracts exist. The question a contractor actually has is which ones are worth pursuing, with whom, and with what chance of winning. Search does not answer that, and a ranked list that never says "no" is search with a sort order.

    Challenge

    A score is only useful if it can disqualify. Fit is a spectrum, but eligibility is not: a set-aside your company holds no qualifying certification for is not a weaker opportunity, it is a closed door. Any model that averages eligibility together with capability will eventually recommend bidding work the customer is barred from, and one confident recommendation to write a disqualified proposal costs more trust than a hundred correct rankings earn.

    The second constraint was explanation. A capture decision gets defended to a partner or a board, so a number with no reasoning attached is not usable no matter how good it is. The score had to decompose into factors a person could argue with, and the arithmetic had to be checkable by hand rather than asserted.

    The third was that being unknown, not being incapable, is what keeps most small firms out of federal work. Primes team with companies they can name. Good subcontractors wait to be found by people who have no way to find them.

    Solution

    Thera maintains a Digital Twin of the company: capabilities, NAICS codes, certifications, past performance, capacity, geography, and the team roster. Every live notice is scored against it on weighted factors, each with its own rationale in plain English, and the factor contributions sum to the headline score so a reader can check the arithmetic rather than being told they could.

    Eligibility sits outside that average as a gate. A notice set aside for a certification the company does not hold is capped at Monitor regardless of how well the rest of it fits. We are on the other side of that gate ourselves: Athena Analytics is an SBA-certified SDVOSB, so the register Thera checks eligibility against is one we appear in too.

    Pre-award notices are pulled alongside solicitations, because sources-sought and presolicitation postings are the window where a small firm can still shape a requirement instead of reacting to one. From there a pipeline carries each pursuit through to submission, with AI-drafted briefings and bid packages that a human approves section by section.

    The newest half of the product points the other way. Thera already ranked subcontractor candidates out of public federal award data; the network lets a member be the company that gets found. A published listing surfaces inside another member's partner search for a specific live contract, matched on NAICS and service area and ranked above the cold public-data leads. There is no feed and nothing to post. You surface because somebody is staffing a contract that closes in nine days.

    Technical Implementation

    The stack is deliberately small: FastAPI and SQLAlchemy over SQLite on one EC2 instance, a Next.js front end, and Caddy terminating TLS, all in Docker Compose. Deployments ship the committed tree to S3 and run over SSM, so the box has no SSH port open at all. The database lives on its own encrypted volume with managed nightly snapshots, and swapping SQLite for Postgres is a connection-string change rather than a migration project.

    Scoring is deterministic and runs in-process. The AI layer sits on top of it rather than inside it: Claude writes the executive briefings and drafts bid sections, and every generated section is a draft a human approves before it goes anywhere. The learning loop runs per organization: overrides and win/loss outcomes tune recommendations inside that customer's boundary, and the engine never reads another customer's data. A published network listing is the single thing that crosses between organizations, carries only the fields its owner filled in, and disappears from every search the moment it is unpublished.

    Authentication is self-hosted rather than outsourced, which means owning the unglamorous parts properly: PBKDF2-SHA256 at 600,000 iterations, opaque bearer tokens stored only as hashes, sliding and absolute session expiry, rate limiting keyed on both the account and the caller, and a password-reset flow that answers identically for an address with an account and one without, because anything that varies turns it into a free lookup of who is bidding.

    Transactional email got the same treatment. Reset links are single-use and expire in an hour, every credential change notifies the account holder with no link to click, and the domain publishes SPF, DKIM and DMARC so those messages arrive believed rather than filed as spam. Bounce and complaint rates are alarmed, because a paused sending account is invisible from inside the application until a customer says a reset never came.

    • Explainable weighted-factor scoring; factor contributions sum to the headline number
    • Set-aside eligibility as a hard gate, not a weighted input
    • Digital Twin per company; per-organization learning loop with no cross-tenant reads
    • Claude-drafted briefings and bid packages, approved section by section by a human
    • One EC2 instance, Docker Compose, deploys over SSM with no SSH port open
    • Self-hosted auth: PBKDF2-SHA256 600k, hashed opaque tokens, enumeration-safe recovery

    Results

    Thera runs in production at thera.athenadatalabs.com, open for signup with a 14-day trial and no card required. Cerberus Contracting LLC runs its capture pipeline on it: live opportunities, real deadlines, real bid and no-bid decisions, and outcomes that show up in revenue rather than in a metrics dashboard.

    We should be straight about that relationship, because it changes how the rest should be read. Cerberus is co-owned by our founder alongside two other veterans. It is a design partner, not an arm's-length customer, and nothing here is an independent reference. What it is instead is an operator with money on the line, which is a harder test than a customer interview, and the reason Thera scores opportunities instead of just listing them.

    The behaviour is held in place by a test suite in the low hundreds, weighted toward the paths where being wrong is expensive: eligibility gating, trial and billing limits, tenant isolation, and account recovery. Several of those tests exist because breaking the guard deliberately was the only way to prove the guard worked.

    Lessons Learned

    A recommendation engine earns its keep by saying no. The eligibility gate is the single most valuable rule in the product, and it is the one that removes options rather than ranking them.

    Explainability is not a feature bolted onto a score, it is a constraint on how the score may be computed. Requiring that factor contributions add up to the headline number ruled out several models that would have scored better on paper and been impossible to defend in a partner meeting.

    Building with an operator who loses work when the tool is wrong changes the feedback. A customer interview produces opinions about features; a design partner with revenue at stake produces objections about edge cases, and the edge cases are where a capture decision actually lives.

    The unglamorous half decides whether the rest gets used. A product that holds a company's pipeline has to get password recovery, session handling and email deliverability right, and none of that is visible when it works. A reset email quietly filed as spam is indistinguishable, from the customer's side, from a product that is broken.

    Next Step

    Ready to Deliver Your Next Data Product?

    Share your goals by email and we will respond with a practical next-step plan for scope, timeline, and delivery.

    Decision Intelligence Systems

    Athena Data Labs

    Designed, built, shipped, and run by us.

    © 2026 Athena Data Labs
    A division of Athena Analytics L.L.C.