Our own software · Contactio

Contactio reads your website and finds the government contracts, grants and bids that fit what you do.

You give it one thing — your website address. It reads your pages, writes a capability profile and keywords you can edit, and ranks NAICS codes off the official 2022 list rather than out of a model's memory. Then it searches six American public sources and puts a plain-English line on each card saying why that one is worth your time.

The platforms that do this are sold as enterprise software, on annual contracts that start in the thousands and run into six figures. This one is $14.99 a month, started in a browser, with a 7-day trial that never asks for a card.

Built and run by Stone Age Software in Houston, TX — the same practice behind our client case studies.

Sound familiar?

Four afternoons nobody gets back

None of these need a bigger team. They need the search to know what your company does.

The portal gives you everything

You type three words that roughly describe what you do, and the search hands back page after page of work you have never done. The handful that fit are in there somewhere.

Nobody here knows our NAICS codes

Somebody picked two codes the day you registered and nothing has looked at them since. Buyers search by those codes, so the wrong ones are not a filing error — they are why nobody calls.

You found it after it closed

The notice sat open for two weeks while everyone was busy, and you opened the tab the afternoon somebody finally had time. Questions were due nine days ago.

The quote was more than the work

You asked what the industry-standard platform costs and got a number with five digits in it. For a firm your size that is a salary, spent on finding work you still have to win.

What you get

Four things that are true by Friday

Not a pilot, not an onboarding call. You sign up, hand over one web address, and the rest of this page is checkable inside the free week.

A real shortlist on day one

Hand it your web address and nothing else. It reads your site, writes the profile, ranks your codes and searches six American public sources — and you are reading scored results the same afternoon, on a free account with no card behind it.

Codes off the official register

Your NAICS codes are how buyers find you, and most small firms are carrying two somebody guessed at years ago. Contactio ranks yours out of the official 2022 list committed to the repository, and drops anything a model invents before you ever see it.

The reason, on the card

Every result carries a plain-English sentence answering why this is worth your time, written from your profile and the notice — not the buyer's own marketing copy, and not a title restated. You can tell in a second whether to open it.

Priced for a firm your size

One subscription, less than a working lunch a month, covering every app on the platform. The enterprise tools in this category start in the thousands a year and run into six figures; this is the one you can expense without a meeting about it.

How it runs

Eight steps, and the check that stands behind each one

A panel of seven small agents, each answering one question, each working from a short purpose-built input rather than the whole website again. Splitting them up is the accuracy argument: one long prompt came back with empty keyword lists, invented codes, and every opportunity scored at zero. Every step below has something structural standing behind it — a list to check against, a second agent, a word-overlap floor.

One box, one button

Sign up with your name, an email and a password, and the portal opens the app straight away — nothing gated, nothing to activate.

  • Opening it asks for exactly one thing — your website address — under a button that reads "Read my website and build my profile"
  • No card at signup: registration never calls the payment provider, and the free trial runs on the account itself
  • Submitting starts a background job, so the browser is not held open while the panel works
  • A progress screen names the stage it is on and lists the agents under "Who's working on it"

It reads your site, then checks its own homework

The scraper takes your landing page plus up to four same-domain pages that look like about, services or capabilities, converts them to text, and works from roughly 15,000 characters of it.

  • The capability summary has to reuse at least five content words from your own pages or it is rejected and re-asked with the reason — describe this website, not a website
  • A service or industry built from words your site never used is dropped before you see it
  • The summary, the keywords and the codes are all yours to edit before a single search runs
  • A site rendered entirely in JavaScript leaves the scraper nothing to read, and it says so plainly rather than guessing at a profile

Keywords, written blind

The keyword agent never sees your website. It works only from the summary and service list the first agent produced — short input, short answers.

  • Five to fourteen phrases, each two to four words, because the sources are keyword-matched APIs and "professional services" returns everything and means nothing
  • Every phrase has to be grounded in the profile you can read on screen
  • Edit or delete any of them on the company profile screen before a search ever runs

Sector first, then codes

Vocabulary matching alone puts a software firm in the wrong half of the economy, so an easier question gets asked first: which sectors is this company even in?

  • "Carrier integration" retrieves Reinsurance Carriers and "mobile app" retrieves Manufactured Home Manufacturing — both were really offered before the sector step existed
  • A shortlist of up to 30 real codes is retrieved from the official 2022 list, 1,012 six-digit codes committed to the repository
  • A code the model returns that is not on that list, or not on the shortlist it was shown, is dropped before it reaches you
  • Titles are snapped to the official wording, and a code you type yourself is checked against the same list

Two scores, blended

Every notice is scored deterministically first, then read by a match agent, and the two are blended sixty-forty in the model's favour.

  • The deterministic half counts per-keyword token coverage weighted by field, whole-phrase bonuses, NAICS agreement, and the certifications you hold
  • The match agent returns a number, a verdict of strong, possible or weak, and up to four evidence phrases that have to appear in the notice or your profile
  • Blending is what keeps one odd reply able to move a ranking without being able to invent one
  • A notice asking for a credential you have not claimed is marked ineligible and pushed down the page — still there unless you filter it out yourself

A second agent argues back

Optimism is the failure mode of a scoring model, so anything the match agent scores 62 or above — or calls a strong fit outright — goes to a reviewer briefed the other way.

  • The brief is adversarial on purpose: another analyst already called this a fit, start from the assumption that it is not, and a shared buzzword is not a fit
  • Disagreement costs the opportunity 22 points and records the concern. It never deletes the row
  • Only the strong matches are challenged, because a second call on every row costs minutes and buys nothing
  • Even the objection is grounding-checked — a concern built from words in neither the notice nor your profile is swapped for a generic phrase

The line you actually read

The sentence on each card answers "why is this worth my time?", not "what is this?". A separate agent writes it, and the listing's own text stays one click away.

  • It is thrown out if it restates the listing title, talks about itself as an AI, or shares fewer than two content words with the notice and your profile
  • When that sentence does not come back, the card falls back to one assembled from the match evidence: duller, and never the listing's own marketing copy
  • The panel reads every notice a search returns, and the count of what is still with it is on the screen while it works
  • Send any single opportunity back to the panel for an explanation, including one that missed the cut
Where it looks

Six sources, and the line around them

Three federal, two states, and a sweep of the portals counties and cities publish on — each one a public API or an open-data portal read from the outside. No partnership, no endorsement, no special access — which is also why there is no per-source surcharge and no data licence in your subscription.

SAM.gov — federal contract opportunities

The last 90 days of federal contract postings, matched on the notice title and deduped by notice id.

  • One request per keyword, about 25 rows back, so a search reaches the current window rather than the whole archive
  • Runs on our GSA key, held on the server — you never register for one, paste one in, or keep track of one
  • The statement of work, the response deadline with its time of day and the contracting officer arrive on the enrichment step
  • Every search row carries a link straight through to the notice on SAM.gov itself

Grants.gov — federal grants

Federal grant opportunities that are currently forecasted or posted, needing no key of any kind.

  • The search endpoint is public and takes no credential, yours or ours
  • Here the keyword goes against the whole record rather than the title alone
  • Forecasted and posted only, so a closed grant never lands on your list
  • Synopsis, eligibility rules and the agency contact are pulled on the enrichment step rather than onto the card

USAspending.gov — award history

Federal contract awards already made in the last 365 days: who is buying what you sell, and who they bought it from last time.

  • This is market intelligence rather than a bid list — there is no solicitation behind an award and no deadline to count down to
  • Which is exactly what tells you whether an agency buys your work at all before you spend a fortnight on their next notice
  • No API key required, same as the other three non-SAM sources
  • Award types A through D, up to ten keywords in a single request, capped at 25 rows

Texas, via data.texas.gov

State-agency solicitation records, read from the state's own open-data portal over its public API rather than scraped off a search page that changes without notice.

  • The portal is the stable machine-readable route into the state's published data, which a JavaScript search page is not
  • An operator pins the dataset on deploy; unpinned, the client finds it from the portal's own catalog and matches columns by name
  • A resolved dataset is cached for an hour, so a portal republishing under a new id is picked up within the hour
  • Set-aside wording in the record is appended to the description, so the certification scan sees it the same way it sees a federal notice

California, via Cal eProcure

The California State Contracts Register, read from the bid board itself — the state publishes no open-data mirror of it the way Texas does, so there is no portal to prefer.

  • Checked rather than assumed: California publishes no open-data mirror of its live solicitations the way Texas does, so there is no portal here to read instead
  • So the board is read on a schedule, once an hour, and your search reads what that run stored — no waiting on a state website mid-search
  • The results table is matched by its column headings rather than by the page's internal names, so California renaming a column does not quietly empty every row
  • A listing stops being offered once it has left the board, and a run that stops working says so instead of serving you last week's bids

Counties and cities, via their own open-data portals

The county and city portals in Texas and California, read over the same public APIs the two state sources use. Local government is not one place, so this one source asks a list of them and interleaves what comes back.

  • Three keywords at each portal rather than five, because here a keyword costs a request in every city on the list
  • Results are interleaved across the portals that answered, so a shortlist is that many buyers rather than the nearest city's whole feed
  • A city whose portal is slow, down, or carries no procurement at all is skipped and reported — the source fails only if none of them answered
  • Every notice is filed under the jurisdiction that published it, because a dozen cities each issue their own “RFP-2026-001”
  • The sweep carries a deadline of its own inside the 150-second one, so it hands back what it has rather than being cut off with nothing

The map today

Six sources, all American — three federal, two states, and a sweep of local portals. That is what a search covers now, and it is drawn deliberately.

  • Federal contract opportunities, federal grants and federal award history are the three that need no introduction to a buyer
  • The two states and the local sweep are where the other half of public buying happens, and they are read from open data rather than scraped off a search page that changes without notice
  • School-district work is not in these six — districts rarely publish open data at all, which is why it is on the roadmap below rather than in this list
  • The UK and Canadian feeds that used to sit here were deleted rather than left in to pad three real sources into five
  • Nothing is submitted, registered or filed on your behalf, at any source, ever
After you decide to chase one

Six things a prospect gets

The search half answers one question: is this worth my time? Say yes and a bigger job starts — the statement of work, the deadline with its time of day, and the list of instructions you get thrown out for missing. That half is covered too. The writing is not.

The prospect workspace

A card you decide to chase becomes your own row, and the next search cannot take it away from you.

  • Convert twice and you still get one prospect — the second click, the one where you are checking the first worked, updates the row
  • Deleting a search result leaves the prospect alone, with its notes, its workspace and its drafts
  • A board column a person moves by hand: nothing scores the decision and nothing tells you go or no-go
  • Server-rendered, and usable with JavaScript switched off

The whole notice, fetched

The moment you convert, a background job asks the source's own API for the full solicitation and files it against the prospect.

  • On a federal solicitation: full text, the response deadline with its time of day, the contracting officer's contacts and the attachment list — the fields a search card never carries
  • Attachments are fetched with our key, held server-side, so nobody pastes a credential onto the end of a URL
  • A fetched attachment is filed into the workspace as a versioned document, beside the drafts that answer it
  • A notice that comes back with no description text is recorded as partial, so the workspace says the requirements are in the attachments rather than implying there are none

The compliance matrix

A line-by-line walk over the solicitation's own structure — deliberately not a model, because an invented requirement is the one that gets ticked off with confidence.

  • Sections L, M, C and K read apart, plus the wording grant notices use for the same three ideas
  • shall, must, should and may not — plus the submission mechanics with no shall or must in them at all, like page limits, font size and questions due
  • Only the first sentence of a paragraph claims that paragraph's citation, so the matrix does not staple a reference onto a row it does not belong to
  • It reads the notice body, and an empty matrix says it is empty rather than standing in for one

Assignments and a review calendar

One assignment per proposal volume the notice actually asks for, and a schedule counted backwards from the deadline.

  • Questions to the buyer at 21 days out, pink team at 14, red at 7, gold at 3, production at 1, submit on the day
  • A milestone the deadline has already overtaken is left off rather than created in the past — a two-week turnaround has no room for a pink team three weeks ago
  • A prospect with no stored deadline gets one undated submit row rather than an empty calendar
  • An assignee email that matches an account links to it, and one that does not is kept as plain text, because most proposal teams include people who will never sign in here

Versioned proposal drafts

Drafts you type, files you upload and the buyer's own attachments, in a repository where nothing is ever overwritten.

  • Every save writes the next version under the same document, and there is no update path — which is the only way the history cannot have a hole in it
  • "Which version was current on Tuesday, and who saved it?" stays answerable after an award and after a protest
  • Files are kept outside the public directory, and the download checks who owns the row before it serves a byte
  • No proposal content is written for you. The repository holds what your team types and what the buyer published, and generates none of it

Certifications you only tick once

Tick what you hold, once, and every future search counts you eligible for the work that asks for it.

  • Eighteen credentials read out of notice text — small business, 8(a), HUBZone, WOSB, EDWOSB, SDVOSB, VOSB, SDB, ISO 9001, ISO 27001, CMMC, ITAR, FedRAMP, GSA schedule, SAM registration, MBE, WBE and DBE
  • Ticking a box re-flags every opportunity already stored, so the counts, the filters and the badges agree the moment you tick it
  • It is asked for before your first search on purpose: profiling ends on the certifications screen, not on the results list
  • It remembers what you told us, not what you hold — the notice text is read, and the rest is taken on your word
Being built next

Where this goes

None of the five below is in the product today — this is the build order, not a feature list. It is on the page because a buyer deciding whether to start here deserves to know which direction the thing is pointed. Everything above this heading is shipped and checkable inside the free week; everything under it is work, and the subscription you start today is the one that gets it.

School districts

The part of local government the sweep above does not reach. A county or a city very often runs an open-data portal, which is what made those readable; a school district almost never does. It posts instead to a purchasing system some vendor sells it, or to a regional buying co-operative, most of them behind a supplier login. Each of those is a client of its own — and Texas alone has more than a thousand districts, which is why this is next rather than done.

Your whole team, on their own logins

The workspace already assigns volumes by email and lays a review calendar out for a team. What it does not have yet is a second seat: your capture lead, your writer and your pricing person will each get their own sign-in, their own assignments and their own view of the board, under the one subscription.

Requirements out of the attachments

Buyers put the real instructions in an attached PDF more often than anyone would like. The workspace fetches and files those today and marks the prospect partial when the notice body is empty. Reading the requirements out of the attachment itself, into the same compliance matrix, is the work that closes that gap.

Native builds for iOS and Android

The client is already written once and targets all three; the web build is the one running today. Native builds are a packaging job rather than a rewrite, and they are queued behind the things above because a phone is where you read a shortlist, not where you write a proposal.

Before you sign up

Where it draws the line

Four boundaries, at the same size as the features. A reader can check every one of them inside the free week, which is the only reason it is worth printing them.

Why the limits are this far up the page

We sell software to people who have been sold software before. A page that only says what a product does teaches a buyer nothing about where it stops, and the place they find out is three weeks in, on a Tuesday, with a proposal due.

So the boundaries sit here rather than in a footnote, and the roadmap above says plainly which of them are permanent and which are just next. The difference between a scope decision and an unfinished feature is the thing most product pages blur, and it is the one a buyer most needs.

If what you read below means Contactio is not for you, that is the free trial working exactly as intended — and there is no card on file to cancel.

A shortlist, not a register

Each run samples its sources: five keywords apiece, about 25 rows back, and a bound on the whole fan-out. That is the design — a list short enough to read beats a list complete enough to ignore — but it does mean a search that returns nothing is not proof that nothing is out there.

It finds the work. You win it

Nothing is submitted, registered or filed on your behalf. The compliance matrix and the calendar organise the response and the repository versions it; the writing and the submitting stay with your team, which is the half a buyer is actually paying for.

American public buyers

Federal contract notices, federal grants, federal award history and two state open-data feeds. If the people who pay you are private companies, this is not your pipeline and the free week is the cheap way to find that out.

Grounded, not infallible

The checks count how much of an answer came from your own words and the notice's, and a code absent from the official register is dropped structurally rather than judged. That catches an agent talking about a different company. It does not make a fluent, on-topic, wrong sentence impossible.

Price and trial

One subscription, seven free days, and no card to start them.

The trial starts with the account itself — no card, no checkout, no payment details at all. You land in the portal with every app already open to you, one click from Contactio.

$14.99 a month, after 7 free days

about $180 a year — one subscription covering every app on the platform. Today that is one app, and it is this one. The payment provider only enters when the free days run out, and the billing screen names the price before a card is asked for.

Subscribe partway through the free week and the days you have not used carry over, so there is no reason to wait until the last one. The free week is once per account, though: a cancel-and-resubscribe cycle restarts the charge rather than the trial.

If a week of real searches shows you that public buyers are not buying what you sell, don't subscribe. That is what the free days are for — and all six sources, federal contract opportunities included, are searched from your first run. There is no key to register for and no setup step standing between the trial and a real answer.

No annual commitment, no implementation fee, and nobody to get on a call with before you can try it. One account covers the firm today, and per-person logins are on the roadmap above under the same subscription. The comparison worth making is not really against another product — it is against the afternoon a week somebody here currently spends reading portals by hand.

No card at signup

Registration never calls the payment provider. The trial runs on the account, so nothing at Stripe can end it early and no outage can stand between you and the product.

Your work stays

When the trial ends the apps lock and nothing is deleted. Your profile, your certifications and every stored opportunity are waiting if you come back.

Cancel in the provider's own portal

Card details, invoices and cancellation live in the payment provider's billing portal, reached from the billing screen. There is no retention maze in between.

No keys to hand over

Every source and the AI panel run on our own keys, held on our server. You never register for one, paste one in, or leave one behind — there is nothing of yours here to reclaim.

Questions we get

Straight answers

How is this so much cheaper than the platform we were quoted?

Because it does one job and does not have a sales team. The established platforms in this category are sold as enterprise software — annual contracts that start in the thousands and reach six figures, with seat minimums, an implementation call and a renewal negotiation. Contactio is a subscription you start yourself in a browser, at $14.99 a month, covering every app on the platform. What you give up is the account manager and the data on who won what in 2011. What you keep is a scored shortlist of current work that fits you, which is the part a ten-person firm was ever going to use.

Do I need a SAM.gov API key to use Contactio?

No. There is no API key anywhere in Contactio for you to find, register for, or paste in — not for SAM.gov, and not for the AI either. Five of the six sources need no key at all; SAM.gov needs one, and it is ours, held on our server and used for every account. So you sign up, hand over your website address, and run a real search against all six the same afternoon. If our key is ever down the SAM.gov row says so and the other five are still searched — but that is our outage to fix, not a setup step waiting on you.

Do I have to be registered in SAM.gov to bid?

That registration is between you and the government. Contactio does not register you, submit a bid, or file anything on your behalf. What it does is read the notice text: SAM registration is one of eighteen credentials and set-asides it looks for, alongside 8(a), HUBZone and CMMC. Tick the ones you hold on the certifications screen and every future search counts you eligible for work that asks for them. That tick is your word, and nothing checks it against a registry.

Will it fix the NAICS codes on our registration?

It will tell you what they should be, and the fixing is a form you file. This matters more than it sounds: buyers and primes search for vendors by NAICS code, so codes somebody guessed at on registration day are a reason nobody calls rather than a filing detail. Contactio works out your sectors first, retrieves a shortlist of up to 30 real codes from the official 2022 list committed to the repository, ranks those, and drops anything that is not on the register before it reaches your screen. You edit the result, and you can type a code in yourself — it gets checked against the same list.

Is my website data safe?

Within limits worth naming out loud. Contactio reads your public site the way any visitor would — the landing page plus up to four same-domain pages, converted to text and capped at roughly 15,000 characters — and it refuses any address that resolves to a private or loopback host, re-checking after redirects. What it stores about you is that text and what the AI made of it: a capability summary, search phrases, NAICS codes, the certifications you tick, and the opportunities it found. It holds no credential of yours at all — Contactio runs on our own keys, so there is none to hold, and the one secret in your row is your password, hashed. Not zero-knowledge, and we will not dress it up as more.

What if my company doesn't do government work?

Then don't buy it. Every source Contactio searches is an American public buyer — federal contract opportunities and grants, federal award history, and state open-data feeds from Texas and California. If the people who pay you are private companies, that is not your pipeline. The trial is the cheap way to find out: point it at your website, run one search, and read what comes back. If nothing there resembles work you would bid, close the tab. There is no card on file to cancel.

Does it write the proposal for me?

No, and that is on purpose. Convert an opportunity and the app fetches the full notice; open the workspace on it and the app parses a compliance matrix out of that notice and lays a review calendar backwards from the deadline. The matrix is a pass over the solicitation's own wording rather than a model, because an invented requirement is worse than a missed one. Drafts you type or upload are versioned and never overwritten. What it will not do is write your technical volume.

Does it read the attachments?

It fetches them, and reading them is the next piece of work. The buyer's attachments are pulled with your key held server-side and filed into the workspace as versioned documents beside your drafts, so nobody has to go back to the portal for them. What is inside them is not parsed yet. When a notice publishes no description text and puts the requirements in an attached PDF, the workspace marks the prospect partial and says so, rather than handing you a matrix it made up.

Is there an app?

There is, and it runs in a browser — including the one on your phone. Two front ends sit over one back end: a compiled client, and server-rendered pages that are feature-complete and need no JavaScript at all. The same code targets iOS and Android, and native builds are on the roadmap rather than in a store today — we are not going to imply otherwise. When the compiled client is missing you get handed the plain pages, which are the whole product rather than a stripped-down version.

What happens when the trial ends, and can I cancel?

The apps lock and your work stays. When the last free day runs out the account flips to an expired-trial state and every app on the portal stays closed until there is a subscription behind it — nothing is deleted, and your profile, certifications and stored opportunities are waiting when you come back. Card details, invoices and cancellation all live in the payment provider's own billing portal, reached from the billing screen, so there is no retention maze between you and the button. The free week is once per account, so restarting later restarts the charge rather than the trial.

Get in touch

Want the same thing pointed at your own systems?

Contactio is what our engineering looks like when the client is us — priced, shipped and gated by its own checks. Tell us what your operation runs on and we'll tell you what we'd build, or that you already own the tool you need.

Prefer to talk?

Call 832-598-8234 or email msco@stoneagesoftware.com. Houston, Texas — serving Houston, The Woodlands, Conroe, Sugar Land, Katy, Pearland, and the Greater Houston metro.

What happens next

We read your message, an engineer replies with questions or a straight answer, and if it's worth a call we book one. No drip campaign, no handoff to sales.

No obligation — we reply within one business day. This form sends your details to Stone Age Software LLC so we can respond to you. See our privacy policy for how we handle them. This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.