Clicky

The Freshness Signal: QDF (Query Deserves Freshness) – Inside Google’s Battle Against Time, Staleness, and Click Bias

Last Significant Update. in the Google API Leak
Last Significant Update.

Behind every search query lies an invisible, high-speed algorithmic sorting engine operating under strict computational deadlines.

Unsealed sworn testimony from the landmark United States v. Google LLC antitrust trial – featuring Google’s Vice President of Search Pandu Nayak, former search chief John Giannandrea, and senior engineer Eric Lehman – combined with official public documentation, quality rater guidelines, a New York Times expose, Bill Slawski’s early work, patents and, using logical inference and leaked, publicly accessible internal Google API schemas, offers almost a complete view of how Google surfaces information from the web.

At the heart of modern retrieval architecture lies a fundamental engineering conflict: how to maintain an index of an ever-changing web, score hundreds of relevance signals in milliseconds, and master “The Freshness Signal” without yielding to the historical weight of user clicks.

In this article, I aim to bridge the gap between macro-level legal accountability (unsealed antitrust testimony from Google executives) and micro-level code architecture (leaked API schemas like semanticDate, richcontentData, and the FreshnessTwiddler).

Read on for more.

1. The Engine Room: Building an Index on a Moving Web

Before Google can retrieve or rank a single web page, it must build and maintain a representation of the internet. This process is complicated by the continuous, uneven evolution of web content, spam, and domain updates.

As Pandu Nayak testified during the trial:

“There is a considerable amount of work required to create a good index. One must combat problems like spam. One must make decisions on matters of freshness. The web changes all the time and one must make decisions about what pages are changing quickly, which pages are changing slowly, and the like.” (Tr. 6304:1-21)

The web does not evolve uniformly. News organisations publish updates by the second, static reference sites remain untouched for years, and manipulative actors continually publish low-quality content. Deciding which pages to re-crawl, calculating their expected rate of decay, and classifying their temporal velocity form the foundation of Google’s crawl and index infrastructure.

2. The Narrowing Funnel: From Millions to Hundreds

When a user submits a search query, Google encounters an immediate computational barrier. The index contains billions of documents, and a standard query can match millions of pages. Yet the system must return an organised answer in a fraction of a second.

Nayak outlined the cascade Google uses to resolve this bottleneck:

“A typical query might have millions of documents on the web that match it, but there’s no way that in the fraction of a second that . . . [Google] can look at a million or millions of documents and retrieve them.” (Tr. 6330:25-6332:11)

Google executes a multi-stage retrieval funnel that progressively narrows candidate documents:

  1. Candidate Retrieval: Google runs a rapid retrieval phase that selects “on the order of tens of thousands of documents from the index that Google can actually look at.” Nayak emphasised that this phase is “crucial” to search quality because “if it does not retrieve relevant documents then search quality will be poor.” (Tr. 6330:25-6332:11)
  2. Algorithmic Scoring & Trimming: Once those candidate pages are isolated, Google performs deeper scoring “to get down to several hundred documents.” (Tr. 6330:25-6332:11)
  3. Final Ranking: Only when the dataset is pared down to several hundred documents does Google apply its full ranking stack to determine final positions on the page. (Tr. 6330:25-6332:11)

3. The Signal Spectrum: Words, Anchors, and Authority

To evaluate and rank pages inside this funnel, Google deploys “a variety of signals”—a collection that Nayak estimated at “several hundred signals” working in concert, while John Giannandrea noted that Google used “maybe 200 signals” in retrieval and ranking during his tenure. (Tr. 6332:19-6333:11; Tr. 2214:22-2215:2)

These signals vary significantly in design, and many function independently of user behaviour. As former Google engineer Eric Lehman testified:

“The word ‘signal’ in the sense that I used it while working on search at Google was fairly broad. Maybe examples would help. They’re not all related to user interactions. So for example, a signal might be how many links on the web are there that point to this web page or what is our estimate of the sort of authoritativeness of this page.” (Tr. 1765:5-20)

Nayak detailed the foundational layers of this evaluation framework:

  • On-Page Content: “It starts with the most basic and in some ways the most important signal, which is just the words on the page. The words on the page are actually kind of crucial, and that’s where the index comes in. Where the words occur, is it in the title or is it in some metadata or is it in the body, these kind[s] of signals are very important.” (Tr. 6332:19-6333:11)
  • Anchor Text: “Another very important signal is the [hyper]links between pages,” known as anchors, which provide a “very valuable clue in deciding what the target page is relevant to.” (Tr. 6332:19-6333:23; 6335:20-24) Lehman confirmed that click data plays no role in anchor calculation: “To generate the anchor signal, that’s just from links between web pages, and it doesn’t involve clicks.” (Tr. 1833:22-1834:6)
  • Core Authority: Core topicality, PageRank, localization, and reliability signals further assess a document’s fitness without relying strictly on user interaction logs. (Tr. 6400:1-7)

4. The Temporal Spectrum: Matching Intent to Time

Among these evaluation vectors, Freshness occupies a distinct role: it is not a uniform modifier, but a dynamic interpretation of user intent. Nayak testified that “the notion of freshness and deciding whether to use it or not is a crucial element” of overall relevance. (Tr. 6333:12-6335:6)

He illustrated how freshness requirements vary along a temporal continuum:

“For example, if you wanted to find out something about your favorite sports team, you want the pages that were published maybe this morning or yesterday, not the ones that were published a year ago, even though they might be relevant in that sense, but they’re not really relevant because they’re not the information you’re seeking. Similarly, if you’re looking for a new laptop, maybe you don’t want the page that was published today, but you want laptop reviews from 2023, because those are the laptops you will be looking at, not the laptop reviews in 2022. On the other hand, if you’re planning your Thanksgiving meal and you want a turkey recipe, then maybe the recipe from ten years ago is actually better than the recipes from today.” (Tr. 6334:1-6335:6)

Freshness requires context-aware latency. Giannandrea noted that “freshness is about latency, not quantity,“ pointing to real-time events as the extreme end of the spectrum:

“Part of the challenge of freshness is making sure that whatever gets surfaced to the top of the — in the ranking algorithm is consistent with what people right now are interested in, right? A. I mean, generally true. A great example of freshness would be somebody famous dies, you kind of need to know that within seconds.” (Tr. 2369:8-20)

To compute document recency, Google extracts explicit structural markers. Lehman highlighted this extraction mechanism:

“There is a special sort of freshness component that tries to look at things like, often news articles will have by-line dates so you can say, well, how old is this article versus this one. This is about Taylor Swift’s relationship two years ago, this is one two weeks ago. And so it can sort of boost the more recent ones more aggressively.” (Tr. 1899:22-1901:12)

5. The Staleness Paradox: Navboost and Click Accretion Bias

The core engineering hurdle in managing freshness is its direct conflict with historical user interaction data (click logs, managed via internal systems like Navboost).

If a search engine relies heavily on cumulative click volume to measure quality, it creates a feedback loop that structurally advantages legacy pages over breaking news or updated content. Nayak explained this systemic bias:

“The challenge with freshness and clicks is that clicks accrete over time, which means older pages, potentially stale pages, tend to have more clicks than fresh pages which may start out with no clicks at all, but even if they start acquiring clicks still will have fewer clicks than sort of the pages that have been around for a while.” (Tr. 6335:7-19)

Because an authoritative guide published three years ago has accumulated significant historical clicks, an unweighted algorithm will continuously surface that older document over a freshly published page that currently has zero clicks.

To prevent results from degrading into outdated links, Google’s systems must actively discount historical click weight for freshness-sensitive queries. Nayak summarised the necessity of this intervention:

“And so if you want to have a good fresh set of results, you really have to take into account the fact that clicks tend to create staleness, and you need to compensate for that in some way.” (Tr. 6335:7-19)

6. Official Guidance: QDF and the Warning Against “Fake Freshness”

The QDF algorithm was invented by Amit Singhal, former Senior VP and Google Fellow. QDF has been evidently a ranking signal for decades.

Here is Matt Cutts addressing Google’s “Query Deserves Freshness” (QDF) concept in the video “Query deserves freshness. In ‘Fact or fiction?'” Recorded on April 23, 2009, he concludes, “It’s a fact“.

More recently, on February 5, 2022, in a now-deleted tweet, John Mueller of Google, recorded by journalist Barry Schwartz, said:

“When you write something new, or significantly change something existing, then change the date. Changing the date without doing anything else is just noise & useless.”

In another (!) deleted Tweet, Google’s John Mueller responded to fake date changes with “These are old tricks“.

John Mueller deleting tweets around QDF seems to be a pattern uncovered in this investigation, deleting tweets (again recorded at SERoundtable where I get my SEO news) like “If it’s evergreen, then by definition you don’t need to change it. No need to do anything special. Keep your dates, make it great.” and “Why would an article be disadvantaged by a date?“. Google, it is clear, is being very careful about its public comments around date signals. I think this is just ensuring he aligns with public documentation, as things get taken out of context quickly by the SEO community. Other deleted tweets contained “You’re changing the date based on when you last looked at an page? That seems totally misleading.” and “Then I wouldn’t change the date on it, just add that as a note.”

NOTE: The deleted tweets surrounding this topic encompass tweets made at least in 2017-2022 about this topic. It’s a little surprising to see tweets deleted topic-wide like this on X. I would surmise that, at least, “seems totally misleading” indicates that that is something Google would actually be just as likely to be penalising you in some way for. It’s probably better for John just to delete out-of-date comments or comments that could be misconstrued either way. It’s the first topic I’ve researched; I’ve seen this, so I don’t know if it is a wider pattern at the time of writing this. Another interesting thing was Gemini was not as helpful in my research of QDF as it has been on the more obscure topics in patents. Especially mining Bill Slawski on the topic. Make of this what you will, but QDF is obviously a key signal at Google.

I do think the advice is still useful if we take the advice as it was given.

Bill Slawski, in 2008, was early to point the SEO community to A New York Times article from 2007, Google Keeps Tweaking Its Search Engine, where “the Times uncovered a Google initiative that goes by the name QDF, or Quality Deserves Freshness”. He concluded, “It discusses whether topics are “hot,” and whether people are writing about those topics in the news, in blogs, and whether searchers are looking for information about those in searches.”

Search Engine Land also reported that “QDF actually predates the Google freshness algorithm update that occurred in 2011.”

“The QDF solution revolves around determining whether a topic is ‘hot.’ If news sites or blog posts are actively writing about a topic, the model figures that it is one for which users are more likely to want current information. The model also examines Google’s own stream of billions of search queries.” Amit Singhal, 2007 (Search Engine Land).

Google now publicly explains these concepts in its official documentation, A Guide to Google Search Ranking Systems (2026), under Freshness Systems:

“We have various ‘query deserves freshness’ systems designed to show fresher content for queries where it would be expected. For example, if someone is searching about a movie that’s just been released, they probably want recent reviews rather than older articles from when production began. For another example, ordinarily a search for ‘earthquake’ might bring back material about preparation and resources. However, if an earthquake happened recently, then news articles and fresher content might appear.”

Explicit Warnings in Helpful Content Guidance

Beyond system definitions, Google’s Creating Helpful, Reliable, People-First Content (2026) documentation specifically confronts creator attempts to manipulate freshness systems. To discourage search-engine-first tactics, Google explicitly poses two direct self-assessment questions to webmasters:

1. Date Manipulation Without Substance:
“Are you changing the date of pages to make them seem fresh when the content has not substantially changed?”

2. Artificial Mass Churn:
“Are you adding a lot of new content or removing a lot of older content primarily because you believe it will help your search rankings overall by somehow making your site seem “fresh?” (No, it won’t)”

These direct questions reflect Google’s awareness that creators often attempt to exploit Query Deserves Freshness (QDF) through artificial means – whether by updating timestamps on stagnant pages or churning URL inventories.

7. Human Quality Evaluation: Search Quality Rater Guidelines (QRG)

Google’s human evaluation framework, detailed in the Search Quality Rater Guidelines (QRG), mirrors this opposition to artificial freshness while defining how human raters score temporal relevance:

  • Needs Met Ratings on Freshness Queries: Human raters score time-sensitive queries using strict decay curves. If a query seeks breaking news, sports scores, or dynamic statistics, an outdated result is penalised with a low Needs Met score regardless of how authoritative the domain is.
  • Archival Value vs. Abandoned Content: The QRG explicitly instructs raters to differentiate between legitimate historical reference (e.g., an in-depth 2012 article on an old event) and abandoned or outdated information.
  • YMYL (Your Money or Your Life) Strictness: Outdated advice on health, legal, or financial topics receives severe Quality penalties. If medical recommendations or financial regulations have changed, an unmaintained page is classified as potentially harmful, overriding its past authority metrics.

8. The Code-Level View: Leaked API Attributes and Verification

Analysis of the leaked Google Content Warehouse API documentation (analysed by me) exposes the exact attributes and modules Google uses to enforce these rules programmatically.

The leak confirms that Google does not rely on a single date tag. Instead, it processes pages through a multi-tiered date verification engine, delta tracking, and serving-time re-rankers.

                             ┌──> bylineDate    (Explicit On-Page Schema/HTML)
                             │
[Document Ingestion] ────────┼──> syntacticDate (Extracted from URL/Title Patterns)
                             │
                             └──> semanticDate  (Evaluated from Entity & Content Recency)
                                        │
                                        ▼
                         [Delta Tracking Engine]
               (Evaluates richcontentData & pageregions)
                                        │
                                        ▼
                           lastSignificantUpdate
             (Internal verified timestamp required for QDF)
                                        │
                                        ▼
                             FreshnessTwiddler
               (Re-ranks candidate set & suppresses Navboost)

A. The Triple-Date Verification Engine

Google cross-references three distinct temporal properties to verify document age and detect timestamp manipulation:

  1. bylineDate: The explicit date displayed in page markup or structured JSON-LD schema. Because site owners can easily modify this tag, it is unverified on its own.
  2. syntacticDate: A date extracted algorithmically from structural patterns, such as date formatting within URL strings or title tags.
  3. semanticDate: A calculated score measuring whether the facts, entities, statistics, and references inside the body copy are up-to-date relative to the broader web graph.

B. Delta Tracking: richcontentData, pageregions, and lastSignificantUpdate

To enforce Google’s public warning (“Are you changing the date of pages… when the content has not substantially changed?”), the system calculates content deltas before updating internal timestamps:

  • richcontentData: Measures the precise volume of text added, deleted, or replaced during a crawl.
  • pageregions: Classifies where edits took place (main body copy vs. boilerplate headers, footers, or sidebars).
  • lastSignificantUpdate: The internal timestamp Google writes to its data store only after richcontentData and pageregions confirm that the content modifications pass a meaningful threshold.

If richcontentData indicates minor line edits while bylineDate displays a new date, lastSignificantUpdate remains unchanged – neutralising any potential QDF boost.

C. Serving-Time Re-Ranking: FreshnessTwiddler

At query execution time, once candidate documents are narrowed down, Google applies final adjustments:

  • FreshnessTwiddler: A serving-time re-ranking module that adjusts candidate document scores just prior to rendering. When a query triggers QDF, the FreshnessTwiddler boosts pages with verified lastSignificantUpdate values while dampening the influence of historical interaction features like Navboost click logs.

9. Synthesis: How the Four Pillars Converge

Perspective Core Focus Key Insight
Legal Testimony (Nayak / Lehman) Algorithmic Bottlenecks & Click Bias Clicks accrete over time; Google must actively suppress historical click weight to let fresh pages surface.
Public Documentation (Google Search Central) Query Intent & Creator Ethics Defines QDF (“movie”, “earthquake”) and explicitly warns against fake date updates and artificial content churn.
Quality Rater Guidelines (QRG) Human Satisfaction & YMYL Safety Scores time-sensitive queries harshly when results are stale; penalises outdated YMYL advice as potentially harmful.
Leaked API Schemas (Content Warehouse) Code-Level Execution Verifies dates via semanticDate, tracks deltas via richcontentData, and updates lastSignificantUpdate only on major edits.

10. Strategic Takeaways for Web Publishers

Peering into the raw code of Google’s Content Warehouse API reveals specific variables that show how these freshness decisions are quantified down to the data structure level.

Within the PerDocData core document model (which acts as a URL’s central report card, and I was one of the first to explore in great detail back in 2025), Google handles freshness through specialised internal objects and attributes:

  • freshboxArticleScores: This nested message container holds output scores from specific freshness classifiers. It tracks sub-metrics like a dedicated news article score, a live-blog score, and a host-level article score. These scores determine whether a piece of content qualifies to enter the “Freshbox” – the UI element reserved for breaking news and real-time updates.
  • timeSensitivity: An integer-based attribute tied directly to internal documentation references like /indexing/instant/hotdocs/README. This score categorises how dependent a document or query context is on temporal relevance, dictating how aggressively the ranking stack should apply decay curves.
  • semanticDateInfo: Rather than looking at a static tag, this container houses the processed output of Google’s semantic date evaluation. It cross-checks the temporal integrity of entities, text references, and facts inside the body against the broader web graph to ensure the content’s timeline matches reality.
  • isHotdoc: A flag utilised by real-time infrastructure to denote content that is actively trending or newly breaking, signalling to the serving-time stack that traditional click-weight heuristics (like Navboost) must be dynamically dialled back.

By inspecting these exact attributes, the code confirms that freshness is treated not as a single binary switch, but as a multi-layered, heavily classified pipeline running continuously across the index.

Let’s look at some of those takeaways:

10.1. Historical Click Accretion Naturally Creates Staleness

Google’s reliance on user click logs (Navboost) creates an inherent systemic bias toward legacy content.

Because an article published three years ago has accumulated traffic over time, an unweighted click model will always favour the older document over a brand-new page with zero historical clicks.

As Pandu Nayak testified, “clicks accrete over time, which means older pages, potentially stale pages, tend to have more clicks than fresh pages… clicks tend to create staleness, and you need to compensate for that in some way“ (Tr. 6335:7-19). To surface fresh information, Google must actively depress historical click weight for freshness-sensitive queries.

10.2. Candidate Retrieval is the First Wall for Fresh Content

Freshness is not evaluated merely at the final page layout phase; it is enforced during candidate retrieval.

When a query is submitted, Google narrows millions of potential web matches down to “tens of thousands of documents from the index that Google can actually look at” before scoring them down to “several hundred documents” for final ranking (Tr. 6330:25-6332:11).

If a new page lacks the core topicality or initial freshness signals to pass the candidate retrieval phase, it is filtered out before Google’s full ranking stack or serving-time twiddlers ever evaluate it.

10.3. Google Uses Triple-Date Verification to Neutralise On-Page Date Hacks

Updating an on-page date tag (bylineDate or dateModified in schema markup) without updating the actual body text does not fool Google’s systems.

Analysis of the leaked Google Content Warehouse API documentation shows that Google cross-references three distinct date attributes:

  • bylineDate: The explicit date displayed in markup/schema (easily manipulated).
  • syntacticDate: Dates algorithmically extracted from structural indicators like URL paths or title tags.
  • semanticDate: A calculated score measuring whether the facts, statistics, and entities within the body copy are up-to-date relative to the broader web graph.

A page whose bylineDate changes while its semanticDate remains old is flagged for date disparity, neutralising any QDF ranking boost.

10.4. Only Substantive Edits Trigger lastSignificantUpdate

To prevent publishers from gaming Query Deserves Freshness (QDF) with minor edits (such as fixing typos or tweaking headers), Google evaluates content deltas through two specific internal metrics:

  • richcontentData: Measures the exact volume of text added, deleted, or replaced during a crawl.
  • pageregions: Identifies where changes occurred, placing significantly higher weight on updates within the main body copy over boilerplate headers, footers, or sidebars.

Google writes a new lastSignificantUpdate timestamp – the key date field referenced by serving-time freshness systems—only when edits in primary page regions cross a meaningful threshold.

10.5. Serving-Time Re-Ranking Overrides Core Scores via FreshnessTwiddler

Once candidate documents pass initial scoring, Google applies dynamic serving-time adjustments right before rendering results to the user. The API leaks reveal the existence of the FreshnessTwiddler - a module designed to alter candidate document scores at query execution time.

When real-time query signals indicate a QDF threshold has been met, the FreshnessTwiddler temporarily elevates pages with verified lastSignificantUpdate timestamps while dampening the influence of historical interaction features like Navboost click logs.

10.6. Freshness Requirements Scale Along an Intent Spectrum

Freshness is not a binary toggle; it exists on a temporal continuum determined by query intent. As Pandu Nayak explained in court, search intent dictates the decay curve:

  • Evergreen Intent: Queries like “turkey recipe” perform best with old, highly vetted pages because culinary fundamentals do not change (Tr. 6334:1-6335:6).
  • Cyclical Intent: Queries like “best laptops” require reviews from the current model year, making reviews from two years ago irrelevant (Tr. 6334:1-6335:6).
  • Real-Time Breaking Intent: As John Giannandrea testified, when “somebody famous dies, you kind of need to know that within seconds” (Tr. 2369:8-20), demanding real-time indexing latency over historical authority.

10.7. Google Explicitly Warns Against Mass Churn and Artificial Date Swaps

In its official Creating Helpful, Reliable, People-First Content documentation, Google explicitly confronts search-engine-first freshness manipulation by posing two direct questions to creators:

“Are you changing the date of pages to make them seem fresh when the content has not substantially changed?”

“Are you adding a lot of new content or removing a lot of older content primarily because you believe it will help your search rankings overall by somehow making your site seem “fresh?” (No, it won’t)”

These warnings directly align with backend system architecture: mass deleting pages or updating dates without updating core content fails richcontentData delta checks and offers no site-wide ranking benefit.

10.8. Human Quality Raters Heavily Demote Outdated YMYL Content

Google’s Search Quality Rater Guidelines (QRG) instruct human evaluators to severely penalise stale information on queries where user harm could occur. On Your Money or Your Life (YMYL) topics – such as medical treatments, legal regulations, or financial advice – pages containing outdated or superseded information are assigned low Page Quality and Needs Met scores regardless of the domain’s historical link authority.

Raters treat unmaintained YMYL pages as actively harmful rather than merely old.

10.9. Non-Click Signals Preserve Structural Authority Beneath QDF Shifts

While QDF temporarily suppresses historical click weight to let new content surface, foundational non-click signals continue to anchor baseline document quality.

As former Google engineer Eric Lehman testified, signals like anchor text and authoritativeness function independently of user behaviour: “To generate the anchor signal, that’s just from links between web pages, and it doesn’t involve clicks“ (Tr. 1833:22-1834:6). Once a QDF trending event cools down, candidate rankings naturally settle back toward pages with strong, non-click authority signals and established link graphs.

10.10. Effective Content Refreshes Must Be Fact- and Entity-Driven

To successfully update legacy content and secure sustainable freshness boosts, editorial workflows must align with Google’s verification architecture:

  1. Focus on Body Delta: Rewrite and expand main body text (pageregions) rather than altering metadata or sidebars.
  2. Update Semantic Entities: Replace outdated statistics, old product references, and expired links to update the document’s semanticDate.
  3. Align Revision Frequency with Intent: Avoid arbitrary date updates on evergreen content; reserve systematic updates for topics subject to cyclical or real-time decay.

Shaun Anderson AKA Hobo Web: UK SEO Expert @Hobo_Web
Shaun Anderson AKA Hobo: @Hobo_Web

Disclaimer: Note that this is not official advice from Google. It is an opinion. It is SEO theory based on my own primary analysis of Google patents and code leaks. Any article (like this) dealing with the Google Content Data Warehouse leak requires a lot of logical inference when putting together the framework for SEOs, as I have done with this article. I urge you to double-check my work and use critical thinking when applying anything about the leaks to your site. My aim with these articles is essentially to confirm that Google does, as it claims, try to identify trusted sites to rank in its index. The aim is to irrefutably confirm white hat SEO has purpose in 2026 – and that purpose is to build high-quality websites.

The Google API leak exposes data structures and protocol buffers, not the live executing C++/Elixir code or algorithmic weights. Take for example siteQualityStddev; While the attribute exists, no one outside Google knows its exact mathematical multiplier in real-time query retrieval. Treat most leaked parameters similarly. Some parameters listed may be inactive or superseded in production. Modern search models (like RankEmbedBERT) don’t use fixed C++ formulas at all. They rely on neural network weights trained on millions of interactions. You can’t “decode” a neural network’s decision-making just by looking at its input schema. Also note I only discuss sales, editorial and marketing-related attributes. I do not explore attributes tied to Abuse, Sensitive or Inappropriate classifiers in documents in any of my writings (and will not). I view the leaks as an architectural map of possibilities, not a cheat code. I suggest you do the same. Feedback and corrections welcome.

Disclosure: I use generative AI when specifically writing about my own experiences, ideas, stories, concepts, tools, tool documentation or research. My tool of choice for this process is Google Gemini Pro 2.5 Deep Research and later models. I have over 25 years of experience writing about accessible website development and SEO (search engine optimisation). All content was conceived, edited, and verified as correct by me, Shaun Anderson, aka Hobo (and is under constant development). Corrections and contributions welcome. See my AI policy.
Hobo
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.