
At 168 tech companies we followed for six weeks, two in three engineering job postings were still up at the end. The ones most likely to stay were the ones already a year old.
We read the public job boards of the same tech companies on 15 September, 13 October and 27 October 2026 and followed every software engineering posting by the ID the board gives it. Of 4,730 postings open on 15 September, 67 percent were still open on 27 October. On that day 44 percent of the open postings had been published more than 90 days earlier, and one in ten more than a year earlier. Every posting, every sentence we counted and every script is published, so each number below can be checked line by line.
A posting that stays up for a year may be a real search for a hard role, an open-ended request to hire several people for the same job, or what job seekers call a ghost job, an opening that is not really there. The data cannot tell those apart, and almost none of the postings say which one they are. Ontario has required postings for work there to say so since 1 January 2026. In this sample, 14 percent of the engineering postings there do.
Of the 4,730 postings open on 15 September, 3,576 were still up four weeks later, 75.6 percent, and 3,170 six weeks later, 67.0 percent. The 1,560 that came down had been up for a median of 77 days by the last day we saw them.
On 27 October the same boards carried 4,944 engineering postings at 162 companies. The median one had been published 75 days earlier.
2,160 postings, 43.7 percent, were older than 90 days, and 485, 9.8 percent, were older than a year. On Greenhouse and Ashby the date is the one the board publishes, and it is a floor: a posting that was taken down and put up again under a new ID starts with a new date, and on Ashby the date can move forward without a new ID at all (more on that below). Lever gives the date the posting was created, which can be earlier than the day it went up. Without the Lever boards, 41.9 percent of postings are older than 90 days and 8.0 percent older than a year.
The year-old postings sit at 63 of the 162 companies. Databricks has 100 engineering postings older than a year out of 253, and OpenAI 39 of 233. Palantir has 93 of 164, but its board runs on Lever, so its dates are creation dates. None of the Databricks, OpenAI or Palantir postings says it is for several hires, a future opening or a vacancy. At 13 of the 125 companies with five or more postings, more than half are older than 180 days.
Postings younger than six months came down at about the same rate whatever their age: between 62 and 66 percent were still up six weeks later. Postings six months to a year old stayed up 72.0 percent of the time, and postings that were already a year old 85.4 percent.
The three companies with the most year-old postings do not explain the pattern. Without Databricks, Palantir and OpenAI, the year-old postings stayed up 80.5 percent of the time against 62.5 percent for postings under 90 days, and without the Lever boards the figure is 84.0 percent. It holds inside single companies too. Of 31 companies with at least three postings under 90 days and three over a year old, the year-old postings stayed up more often at 25.
Some postings say why they might stay up for a long time. Counted across all 4,972 engineering postings on 27 October, at every board read that day, 30 postings at 12 companies say they are hiring for several seats or several teams; Stripe prints “Multiple Positions Available.” on 12. 24 postings at nine companies say the team is matched during or after the interviews. 115 postings at seven companies say there is no deadline or that applications are taken on a rolling basis; Anthropic prints “Deadline to apply: None.” on 52. Two describe themselves as something other than a current opening: one at Webflow that reads “This is a Future Opening.” and one at Anthropic that reads “This is a pipeline role feeding four areas.”
A posting that came down may have been filled, paused, cancelled or replaced. Of the 1,560 that came down, 92 had a counterpart from the same company with the same title and location under a new ID, dated after the old posting was last seen, at 29 companies. Some titles are generic enough to match by chance, “Senior Software Engineer” among them, and a real match can be a second hire for the same job or the same search published again; the boards do not say which.
Greenhouse and Lever kept the published date of every posting we saw on both days: 0 of 1,992 Greenhouse postings and 0 of 213 Lever postings changed it. Ashby is different. 73 of 965 Ashby postings, 7.6 percent, kept the same ID and address but showed a later published date on 27 October than on 15 September, at 28 companies. The median move was 91 days. 27 of them had been dated more than 90 days before 15 September.
We do not know what moves the date on Ashby’s side, and we did not keep the September text of these postings, so we cannot say whether any wording changed with it. Whatever the cause, the new date is the one the page gives search engines. We opened all 73 postings: on the 69 that loaded, the datePosted field in the page markup showed the new date. Snowflake had 12 such postings, Airwallex 10 and OpenAI 7.
For a candidate sorting a job search by newest, a date that reads two weeks old on an Ashby board can belong to a posting that has been up since spring.
Since 1 January 2026, Ontario’s Employment Standards Act requires every publicly advertised job posting to include “a statement disclosing whether the posting is for an existing vacancy or not.” It applies to postings for work in Ontario from employers with 25 or more employees, posted on or after that date, and not to a general recruitment campaign that does not advertise a specific position. The ministry’s guide defines an existing vacancy as a position that is imminently available for a qualified candidate to fill, and adds that saying so does not oblige the employer to fill it. The same part of the act requires pay information and a statement if AI is used to screen, assess or select applicants.
We took every engineering posting whose location names a place in Ontario and that the board dates 2026: 211 postings at 32 companies. 30 of them, 14.2 percent, say whether the vacancy exists, at six companies. All 30 say that it does. None says that it does not.
Lyft prints “This job fills an existing vacancy.” on 13 of its 17 Ontario postings, and Robinhood a vacancy notice on 10 of 27. Okta, with 33 Ontario postings, Cohere with 19, Baseten and Stripe with 14 each and Fivetran with 13 have none. That is not evidence of a breach. A posting does not show how many people a company employs in Ontario, and a posting that lists Toronto alongside San Francisco may not be for work in Ontario at all. 88 of the 211 list only Ontario locations, and 20 of those, 22.7 percent, carry the statement, against 10 of the 123 that also list places elsewhere, 8.1 percent.
The ministry counts linked pages and documents as part of a posting, so we also opened one live posting page for each of the 26 companies without the sentence. On the 24 where the posting text loaded, none had the word “vacancy” anywhere on the page; on Instacart’s and Lattice’s the text did not load.
| Company | Postings | Say whether the vacancy exists | Mention AI in their own hiring |
|---|---|---|---|
| Okta | 33 | 0 of 33 | 33 of 33 |
| Robinhood | 27 | 10 of 27 | 27 of 27 |
| Cohere | 19 | 0 of 19 | 19 of 19 |
| Lyft | 17 | 13 of 17 | 17 of 17 |
| Baseten | 14 | 0 of 14 | 0 of 14 |
| Stripe | 14 | 0 of 14 | 0 of 14 |
| Fivetran | 13 | 0 of 13 | 0 of 13 |
| Braze | 10 | 0 of 10 | 10 of 10 |
| Justworks | 7 | 0 of 7 | 0 of 7 |
| Carta | 6 | 0 of 6 | 0 of 6 |
| Sentry | 6 | 0 of 6 | 0 of 6 |
| Instacart | 5 | 0 of 5 | 0 of 5 |
| MongoDB | 4 | 0 of 4 | 3 of 4 |
| Snowflake | 4 | 0 of 4 | 0 of 4 |
| Toast | 4 | 2 of 4 | 4 of 4 |
| Harvey | 3 | 0 of 3 | 3 of 3 |
| Perplexity | 3 | 0 of 3 | 0 of 3 |
| Sierra | 3 | 0 of 3 | 0 of 3 |
| Zip | 3 | 2 of 3 | 3 of 3 |
| Twilio | 2 | 2 of 2 | 2 of 2 |
| 1 | 1 of 1 | 1 of 1 |
Postings whose location names a place in Ontario and that the board dates 2026, read on 27 October 2026. Companies with three or more such postings, or with any vacancy statement; the other 11 companies have one or two postings each and no vacancy statement. A missing statement is not a breach in itself: the rule covers work in Ontario at employers with 25 or more employees there, which a posting does not show. Every posting and sentence is in the data appendix.
91 of the 211, 43.1 percent, say the company uses or may use AI to screen or assess applicants, and 127 mention AI in the company’s hiring in some way. The two rules are not alike: the AI statement is required only where AI is used, so a posting without one may be in order. 33 of the 91 are Okta’s, in a notice written for New York City’s rule on automated hiring tools that opens with “Notice for New York City Applicants & Employees”.
Across all of Canada the share with a vacancy statement is lower. Of 549 engineering postings dated 2026 that name a Canadian location, 53, 9.7 percent, carry one, at eight companies.
New York’s Senate Bill S8877 would require employers with at least 100 employees to state in every job advertisement whether it is for a current vacancy and by when they intend to fill it, with a different statement if that is more than 90 days away. It passed the Senate on 28 April 2026 and the Assembly on 2 June. On 27 October the legislature’s page showed no action since and no signature.
The sample has 913 engineering postings naming a New York location, at 74 companies, at every board read on 27 October. Half of them, 50.3 percent, were published more than 90 days before that day, and nine carry a vacancy statement of any kind. The bill’s 90 days concern the employer’s plan from the date of the advertisement, so a posting’s age does not say which statement it would need.
A posting that stays up for a year next to postings that come down in weeks fits what job seekers describe as a ghost job, whether it is one or not.
If a posting is for a seat you mean to fill, one sentence answers the question, and Lyft’s is six words long. If it is an open-ended request for several hires, or a pipeline you will match to teams later, say that instead, as Stripe does on 12 postings and Webflow on one. If you post for work in Ontario and employ 25 or more people there, the vacancy statement is already required for any posting that advertises a specific position. When the seat is filled, take the posting down; a posting published again carries a new date, and candidates will read it as a new opening.
For a startup hiring one engineer at a time, the same applies at smaller scale. If a posting is still up after the 75 days that was the median age in this sample, a line saying the search is still open costs nothing.
An old posting is not necessarily a fake one. Some say plainly that they are for several hires or for team matching, and the data cannot separate a long search from an empty one.
Three things are worth checking. Whether the posting says it is for an existing vacancy, several seats or a future opening. Whether a posting with the same title came down and reappeared with a new date: that date says when it was posted again, not when the search began. And on an Ashby board, that the date may be newer than the posting; the page itself gives no sign of it, but the appendix lists the 73 postings whose date moved and every company’s count of year-old postings.
We read the public job boards of the same 387 company names on Greenhouse, Ashby and Lever on 15 September, 29 September, 13 October and 27 October 2026. Three of those reads kept the ID of every posting; the 29 September read kept one ID per role and is not used here. The survival and age figures count only boards that answered on 15 September, 13 October and 27 October, so a board that failed to load one day is not mistaken for closed postings: 180 boards, of which 170 had engineering postings on at least one of those days and 162 on 27 October. The statement, Canada and New York counts use every board read on 27 October, 4,972 postings. A posting qualified when its title described a software, data, machine learning, security, platform, mobile or infrastructure engineering role, with the same filter as our September count.
A posting is the board’s own ID. It is still up if the same ID is in the engineering list on a later read; 18 of the 1,560 counted as taken down were still on their board in another form, retitled or unlisted. Its age is the number of days since the published date the board gives: first_published on Greenhouse, publishedAt on Ashby and createdAt on Lever. Lever’s is the date the posting was created, and Lever postings are older on this measure, a median of about 250 days against 69 on Greenhouse and 77 on Ashby; there are 260 of them, and the main findings hold without them.
Sentences about the opening, its deadline, the team, the vacancy and AI in hiring were picked by pattern from every posting of 27 October: 156 distinct sentences. A language model (Claude) labeled each one under written instructions, twice, in runs that did not see each other. The runs agreed on 145 of 156. The 11 disagreements were all sentences saying a company uses AI somewhere in hiring without saying it screens with it; they are counted as mentions of AI in hiring and never as screening. No person checked every label, which is why every one is printed in the appendix.
Ontario postings are those whose location names Toronto, Ottawa, Waterloo, Kitchener, Mississauga, Markham, Ontario or the abbreviation ON; no location in the sample named another Ontario city without the province. “Dated 2026” means the board’s date, which on Ashby can move forward; two Ontario postings seen on 15 September had moved, both from one 2026 date to another. The laws were read on the government pages on 27 October 2026; the notes are in legal-timeline.md.
The sample is 170 large and mid-sized tech companies, mostly American, with public boards on three systems, and six weeks is a short window. A posting that came down may have been filled or abandoned; a posting that stayed may be a real search.
Match.dev, which published this, matches startups with engineers for a specific role without a public posting. A business like that has an interest in public postings looking unreliable, which is one more reason every row and script behind these numbers is published.
This website uses its own and third-party cookies for analytical purposes and to offer you advertising of interest to us and third parties. You can consult all the information in our Cookies Policy. You can manage the acceptance or rejection of cookies by clicking on “Configure”.
Privacy is important to us, so you have the option of disabling certain types of storage that may not be necessary for the basic functioning of the website. Blocking categories may impact your experience on the website. More information


