<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HQT Blog</title><link>https://hqt.org/blog/</link><atom:link href="https://hqt.org/feed.xml" rel="self" type="application/rss+xml"/><description>Notes from the HQT team on the technology we build for public agencies: AI, cloud, security, data, and software.</description><language>en-us</language><item><title>Observability: knowing your application is broken before residents tell you</title><link>https://hqt.org/blog/observability-for-agency-applications/</link><guid>https://hqt.org/blog/observability-for-agency-applications/</guid><pubDate>Wed, 09 Sep 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>Logs, metrics, and traces are not a luxury for public-facing systems. They are how you keep a promise.</description></item><item><title>Retrieval quality, not the model, decides whether an AI assistant is useful</title><link>https://hqt.org/blog/retrieval-quality-decides-assistant-usefulness/</link><guid>https://hqt.org/blog/retrieval-quality-decides-assistant-usefulness/</guid><pubDate>Wed, 09 Sep 2026 08:00:00 +0000</pubDate><category>AI</category><description>Chunking, metadata, permission filtering, and evaluation decide whether an agency assistant is useful, and the model is the replaceable part.</description></item><item><title>Small open models are good enough for many agency tasks</title><link>https://hqt.org/blog/evaluating-small-open-models-for-agency-tasks/</link><guid>https://hqt.org/blog/evaluating-small-open-models-for-agency-tasks/</guid><pubDate>Wed, 02 Sep 2026 08:00:00 +0000</pubDate><category>AI</category><description>The largest model is not always the right one. For classification, extraction, and grounded answering, smaller models running in the agency&#x27;s own environment often do the job.</description></item><item><title>Designing agency software for the counter and the phone at the same time</title><link>https://hqt.org/blog/designing-for-the-counter-and-the-phone/</link><guid>https://hqt.org/blog/designing-for-the-counter-and-the-phone/</guid><pubDate>Wed, 26 Aug 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>Staff at a counter and residents on a phone need different things from the same system. Both can be served well.</description></item><item><title>Five terms we think every agency AI contract should include</title><link>https://hqt.org/blog/what-agencies-should-require-in-an-ai-contract/</link><guid>https://hqt.org/blog/what-agencies-should-require-in-an-ai-contract/</guid><pubDate>Wed, 26 Aug 2026 08:00:00 +0000</pubDate><category>Public Sector</category><description>Short, specific contract language that protects agencies buying AI-enabled software.</description></item><item><title>A plain-language glossary of the technology terms in your next IT solicitation</title><link>https://hqt.org/blog/a-plain-language-glossary-for-procurement-staff/</link><guid>https://hqt.org/blog/a-plain-language-glossary-for-procurement-staff/</guid><pubDate>Wed, 19 Aug 2026 08:00:00 +0000</pubDate><category>Public Sector</category><description>Short definitions for procurement and program staff who have to evaluate technical proposals.</description></item><item><title>Prompt injection is the new SQL injection, and we test for it</title><link>https://hqt.org/blog/prompt-injection-is-the-new-sql-injection/</link><guid>https://hqt.org/blog/prompt-injection-is-the-new-sql-injection/</guid><pubDate>Wed, 19 Aug 2026 08:00:00 +0000</pubDate><category>Security</category><description>Any system that lets a language model read untrusted text has a new class of vulnerability. Here is how we test before launch.</description></item><item><title>An acceptable use policy for generative AI should govern data, not tools</title><link>https://hqt.org/blog/acceptable-use-policy-for-generative-ai/</link><guid>https://hqt.org/blog/acceptable-use-policy-for-generative-ai/</guid><pubDate>Wed, 19 Aug 2026 08:00:00 +0000</pubDate><category>AI</category><description>What a generative AI acceptable use policy must cover, what it should leave alone, and how to keep it from going stale.</description></item><item><title>Patching is boring, and that is the point</title><link>https://hqt.org/blog/patching-is-boring-and-that-is-the-point/</link><guid>https://hqt.org/blog/patching-is-boring-and-that-is-the-point/</guid><pubDate>Wed, 12 Aug 2026 08:00:00 +0000</pubDate><category>Security</category><description>A repeatable patch process beats any security product an agency could buy.</description></item><item><title>Your vendor&#x27;s new AI feature is a new system, not an update</title><link>https://hqt.org/blog/vendor-ai-feature-is-a-new-system/</link><guid>https://hqt.org/blog/vendor-ai-feature-is-a-new-system/</guid><pubDate>Wed, 12 Aug 2026 08:00:00 +0000</pubDate><category>AI</category><description>Vendors are adding AI to platforms agencies already license. Here is what to test first, and what to leave switched off.</description></item><item><title>Every model we deploy for an agency ships with a model card</title><link>https://hqt.org/blog/model-cards-for-public-sector-ml/</link><guid>https://hqt.org/blog/model-cards-for-public-sector-ml/</guid><pubDate>Wed, 05 Aug 2026 08:00:00 +0000</pubDate><category>Data</category><description>A short, plain-language document that explains what a model does, how it was tested, and where it should not be used.</description></item><item><title>Notes on rolling out passkeys to a workforce</title><link>https://hqt.org/blog/passkeys-rollout-notes/</link><guid>https://hqt.org/blog/passkeys-rollout-notes/</guid><pubDate>Wed, 05 Aug 2026 08:00:00 +0000</pubDate><category>Security</category><description>Phishing-resistant sign-in is finally practical for ordinary staff. What goes smoothly, and what needs planning.</description></item><item><title>How we treat AI-generated code in delivery pipelines</title><link>https://hqt.org/blog/ai-generated-code-in-our-pipelines/</link><guid>https://hqt.org/blog/ai-generated-code-in-our-pipelines/</guid><pubDate>Wed, 29 Jul 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>Coding assistants are part of how software is written now. Here is what that changes about review and testing, and what it does not.</description></item><item><title>Open data as a public records strategy</title><link>https://hqt.org/blog/open-data-that-reduces-records-requests/</link><guid>https://hqt.org/blog/open-data-that-reduces-records-requests/</guid><pubDate>Wed, 22 Jul 2026 08:00:00 +0000</pubDate><category>Data</category><description>Publishing what people repeatedly ask for is cheaper than answering each request by hand.</description></item><item><title>Address data is the hardest data a local government owns</title><link>https://hqt.org/blog/address-data-is-the-hardest-data-a-local-government-owns/</link><guid>https://hqt.org/blog/address-data-is-the-hardest-data-a-local-government-owns/</guid><pubDate>Wed, 22 Jul 2026 08:00:00 +0000</pubDate><category>Data</category><description>Addresses disagree across permitting, assessment, billing, and dispatch, and reconciling them takes an address layer with a named owner.</description></item><item><title>Running a ransomware tabletop exercise with city leadership</title><link>https://hqt.org/blog/incident-response-tabletop-for-a-city/</link><guid>https://hqt.org/blog/incident-response-tabletop-for-a-city/</guid><pubDate>Wed, 15 Jul 2026 08:00:00 +0000</pubDate><category>Security</category><description>A two-hour exercise format that gets department heads and elected officials ready for a bad day.</description></item><item><title>Data conversion is the project, not the last two weeks of it</title><link>https://hqt.org/blog/data-conversion-is-the-project/</link><guid>https://hqt.org/blog/data-conversion-is-the-project/</guid><pubDate>Wed, 15 Jul 2026 08:00:00 +0000</pubDate><category>Data</category><description>Legacy data resists conversion in ways a schema mapping never shows, so we plan and validate migration as its own project.</description></item><item><title>API-first integration for agencies that own a dozen vendor systems</title><link>https://hqt.org/blog/api-first-integration-in-local-government/</link><guid>https://hqt.org/blog/api-first-integration-in-local-government/</guid><pubDate>Wed, 08 Jul 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>How to connect commercial platforms without building a fragile web of point-to-point links.</description></item><item><title>Using AI to triage service requests without losing the human</title><link>https://hqt.org/blog/ai-triage-for-service-requests/</link><guid>https://hqt.org/blog/ai-triage-for-service-requests/</guid><pubDate>Wed, 08 Jul 2026 08:00:00 +0000</pubDate><category>AI</category><description>How classification models can route 311-style requests, and the guardrails that keep residents from falling through.</description></item><item><title>Shared responsibility: what your cloud provider will not do for you</title><link>https://hqt.org/blog/reading-a-cloud-shared-responsibility-model/</link><guid>https://hqt.org/blog/reading-a-cloud-shared-responsibility-model/</guid><pubDate>Wed, 01 Jul 2026 08:00:00 +0000</pubDate><category>Cloud</category><description>Cloud providers secure the cloud. Agencies secure what they put in it. The line between those matters in an audit.</description></item><item><title>Boring technology is the right default for systems that must run for a decade</title><link>https://hqt.org/blog/boring-technology-for-decade-long-systems/</link><guid>https://hqt.org/blog/boring-technology-for-decade-long-systems/</guid><pubDate>Wed, 01 Jul 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>Agency systems outlive the teams that choose them, so we default to components that will still be supportable, staffable, and patchable in ten years.</description></item><item><title>Stop testing with production data</title><link>https://hqt.org/blog/synthetic-test-data-for-government-systems/</link><guid>https://hqt.org/blog/synthetic-test-data-for-government-systems/</guid><pubDate>Wed, 24 Jun 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>Copying production databases into test environments is common, risky, and usually unnecessary. Here is the alternative.</description></item><item><title>Model the cloud bill before you move the workload</title><link>https://hqt.org/blog/model-the-cloud-bill-before-you-migrate/</link><guid>https://hqt.org/blog/model-the-cloud-bill-before-you-migrate/</guid><pubDate>Wed, 24 Jun 2026 08:00:00 +0000</pubDate><category>Cloud</category><description>A method for building a defensible cloud cost estimate before a migration, and the line items a first model leaves out.</description></item><item><title>Cloud cost surprises and public budgets do not mix</title><link>https://hqt.org/blog/cloud-cost-surprises-in-public-budgets/</link><guid>https://hqt.org/blog/cloud-cost-surprises-in-public-budgets/</guid><pubDate>Wed, 17 Jun 2026 08:00:00 +0000</pubDate><category>Cloud</category><description>Why variable cloud bills are a governance problem for agencies, and the controls that keep them predictable.</description></item><item><title>Running language models inside the agency&#x27;s cloud boundary</title><link>https://hqt.org/blog/running-language-models-inside-the-agency-boundary/</link><guid>https://hqt.org/blog/running-language-models-inside-the-agency-boundary/</guid><pubDate>Wed, 17 Jun 2026 08:00:00 +0000</pubDate><category>AI</category><description>For sensitive data, the model should come to the data. Here is what that looks like in practice.</description></item><item><title>What we mean when we say DevSecOps</title><link>https://hqt.org/blog/what-we-mean-by-devsecops/</link><guid>https://hqt.org/blog/what-we-mean-by-devsecops/</guid><pubDate>Wed, 10 Jun 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>The term is overused. Here is the concrete set of practices behind it on our projects.</description></item><item><title>Why we write the runbook before we write the feature</title><link>https://hqt.org/blog/why-we-write-runbooks-before-features/</link><guid>https://hqt.org/blog/why-we-write-runbooks-before-features/</guid><pubDate>Wed, 10 Jun 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>We draft the runbook for a new service before building the feature it describes, because the operational story surfaces design problems early.</description></item><item><title>GIS data quality becomes a life-safety issue under NG911</title><link>https://hqt.org/blog/gis-data-quality-and-ng911/</link><guid>https://hqt.org/blog/gis-data-quality-and-ng911/</guid><pubDate>Wed, 03 Jun 2026 08:00:00 +0000</pubDate><category>Public Sector</category><description>Next Generation 911 routes calls using GIS. That changes what &quot;good enough&quot; means for address data.</description></item><item><title>Lessons from building a streaming pipeline for sensor data</title><link>https://hqt.org/blog/streaming-sensor-data-lessons/</link><guid>https://hqt.org/blog/streaming-sensor-data-lessons/</guid><pubDate>Wed, 03 Jun 2026 08:00:00 +0000</pubDate><category>Data</category><description>Real-time data from meters and sensors looks simple until the sensors misbehave. Design notes for utilities and public works.</description></item><item><title>Zero Trust without buying a Zero Trust platform</title><link>https://hqt.org/blog/zero-trust-without-buying-a-platform/</link><guid>https://hqt.org/blog/zero-trust-without-buying-a-platform/</guid><pubDate>Wed, 27 May 2026 08:00:00 +0000</pubDate><category>Security</category><description>Zero Trust is a set of design choices, most of which agencies can make with tools they already own.</description></item><item><title>Run the tabletop for an outage, not just a breach</title><link>https://hqt.org/blog/tabletop-exercise-for-an-outage-not-just-a-breach/</link><guid>https://hqt.org/blog/tabletop-exercise-for-an-outage-not-just-a-breach/</guid><pubDate>Wed, 27 May 2026 08:00:00 +0000</pubDate><category>Security</category><description>A tabletop built around a failed migration or a vendor outage tests decisions a ransomware scenario never reaches.</description></item><item><title>What we learned building an assistant that answers questions from a municipal code</title><link>https://hqt.org/blog/building-a-code-assistant-over-a-municipal-code/</link><guid>https://hqt.org/blog/building-a-code-assistant-over-a-municipal-code/</guid><pubDate>Wed, 20 May 2026 08:00:00 +0000</pubDate><category>AI</category><description>A retrieval-augmented assistant over a published city code, built as an internal exercise. The hard parts were not the model.</description></item><item><title>Low-code or custom code? A decision guide for agencies</title><link>https://hqt.org/blog/choosing-between-low-code-and-custom/</link><guid>https://hqt.org/blog/choosing-between-low-code-and-custom/</guid><pubDate>Wed, 13 May 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>When a Power Platform or ServiceNow app is the right call, when it is not, and how to tell in advance.</description></item><item><title>Why dashboards go unused, and what to do about it</title><link>https://hqt.org/blog/dashboards-that-nobody-uses/</link><guid>https://hqt.org/blog/dashboards-that-nobody-uses/</guid><pubDate>Wed, 06 May 2026 08:00:00 +0000</pubDate><category>Data</category><description>Most dashboards die within months. The fix is less about visualization and more about definitions and ownership.</description></item><item><title>A SOC 2 report is evidence, not a certificate</title><link>https://hqt.org/blog/reading-a-soc-2-report-without-being-an-auditor/</link><guid>https://hqt.org/blog/reading-a-soc-2-report-without-being-an-auditor/</guid><pubDate>Wed, 06 May 2026 08:00:00 +0000</pubDate><category>Security</category><description>SOC 2 reports are long, but the four places that should change an agency procurement decision are short and specific.</description></item><item><title>We are implementing the NIST Cybersecurity Framework on ourselves first</title><link>https://hqt.org/blog/we-are-implementing-nist-csf-in-our-own-company/</link><guid>https://hqt.org/blog/we-are-implementing-nist-csf-in-our-own-company/</guid><pubDate>Wed, 29 Apr 2026 08:00:00 +0000</pubDate><category>Company</category><description>A note on how HQT is building its own security program before asking agencies to trust us with theirs.</description></item><item><title>A one-page Zero Trust progress report for a council or board</title><link>https://hqt.org/blog/zero-trust-progress-report-format/</link><guid>https://hqt.org/blog/zero-trust-progress-report-format/</guid><pubDate>Wed, 29 Apr 2026 08:00:00 +0000</pubDate><category>Security</category><description>Governing bodies fund what they can see. A simple format for showing security maturity over time.</description></item><item><title>CJIS for software teams: what actually changes when you touch criminal justice data</title><link>https://hqt.org/blog/cjis-for-software-teams/</link><guid>https://hqt.org/blog/cjis-for-software-teams/</guid><pubDate>Wed, 22 Apr 2026 08:00:00 +0000</pubDate><category>Security</category><description>A practical summary of the CJIS Security Policy requirements that affect developers and integrators.</description></item><item><title>Publish DMARC at reject, then keep the callback rule anyway</title><link>https://hqt.org/blog/dmarc-enforcement-and-the-callback-rule/</link><guid>https://hqt.org/blog/dmarc-enforcement-and-the-callback-rule/</guid><pubDate>Wed, 22 Apr 2026 08:00:00 +0000</pubDate><category>Security</category><description>SPF, DKIM, and DMARC in plain terms, a sequence for reaching enforcement without breaking mail, and the fraud none of them touch.</description></item><item><title>Replacing a legacy application without a big-bang cutover</title><link>https://hqt.org/blog/strangler-pattern-for-legacy-agency-apps/</link><guid>https://hqt.org/blog/strangler-pattern-for-legacy-agency-apps/</guid><pubDate>Wed, 15 Apr 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>How the strangler pattern lets an agency modernize one function at a time while the old system keeps running.</description></item><item><title>A digital twin starts with the GIS, not the platform</title><link>https://hqt.org/blog/digital-twin-starts-with-data/</link><guid>https://hqt.org/blog/digital-twin-starts-with-data/</guid><pubDate>Wed, 15 Apr 2026 08:00:00 +0000</pubDate><category>Data</category><description>The most valuable part of a utility digital twin is the part nobody wants to fund: accurate asset data.</description></item><item><title>The accessibility rule for state and local websites is not a future problem</title><link>https://hqt.org/blog/accessibility-deadline-for-state-and-local-web/</link><guid>https://hqt.org/blog/accessibility-deadline-for-state-and-local-web/</guid><pubDate>Wed, 08 Apr 2026 08:00:00 +0000</pubDate><category>Public Sector</category><description>What the ADA Title II web accessibility rule requires and how to start remediating now.</description></item><item><title>A project is not finished until the agency can run it without the vendor</title><link>https://hqt.org/blog/software-project-handover-checklist/</link><guid>https://hqt.org/blog/software-project-handover-checklist/</guid><pubDate>Wed, 08 Apr 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>The artifacts and demonstrations an agency should require at closeout: code, pipelines, runbooks, credentials, and documentation.</description></item><item><title>Infrastructure as code is for small teams too</title><link>https://hqt.org/blog/infrastructure-as-code-for-small-teams/</link><guid>https://hqt.org/blog/infrastructure-as-code-for-small-teams/</guid><pubDate>Wed, 01 Apr 2026 08:00:00 +0000</pubDate><category>Cloud</category><description>The case for scripting your cloud environment even when there are only two of you.</description></item><item><title>If you only do one security project this year, make it multi-factor authentication</title><link>https://hqt.org/blog/multi-factor-authentication-is-the-first-project/</link><guid>https://hqt.org/blog/multi-factor-authentication-is-the-first-project/</guid><pubDate>Wed, 25 Mar 2026 08:00:00 +0000</pubDate><category>Security</category><description>Why MFA everywhere is the highest-value control for a small agency, and how to roll it out without a revolt.</description></item><item><title>Why we would build a permit portal on serverless services</title><link>https://hqt.org/blog/serverless-for-a-permit-portal/</link><guid>https://hqt.org/blog/serverless-for-a-permit-portal/</guid><pubDate>Wed, 25 Mar 2026 08:00:00 +0000</pubDate><category>Cloud</category><description>Resident-facing services have spiky demand and small budgets. Pay-per-use architecture fits both.</description></item><item><title>What a good statement of work looks like for a software project</title><link>https://hqt.org/blog/what-a-good-statement-of-work-looks-like/</link><guid>https://hqt.org/blog/what-a-good-statement-of-work-looks-like/</guid><pubDate>Wed, 18 Mar 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>The sections we insist on before we start a software engagement, and why each one protects the agency as much as us.</description></item><item><title>Three integration failures that nobody notices until the data is wrong</title><link>https://hqt.org/blog/three-integration-failures-that-stay-quiet/</link><guid>https://hqt.org/blog/three-integration-failures-that-stay-quiet/</guid><pubDate>Wed, 11 Mar 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>File transfers, direct database access, and APIs each fail in a way that tells nobody. Here is how to make each failure visible.</description></item><item><title>Why we started HQT</title><link>https://hqt.org/blog/why-we-started-hqt/</link><guid>https://hqt.org/blog/why-we-started-hqt/</guid><pubDate>Mon, 09 Mar 2026 08:00:00 +0000</pubDate><category>Company</category><description>A short account of who we are, what we are trying to build, and why we chose state and local government.</description></item><item><title>Acceptance criteria that a tester can execute and a contract can rely on</title><link>https://hqt.org/blog/acceptance-criteria-that-protect-the-agency/</link><guid>https://hqt.org/blog/acceptance-criteria-that-protect-the-agency/</guid><pubDate>Wed, 04 Mar 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>Why &quot;the system shall work&quot; cannot be enforced, and how to write acceptance criteria that produce a clear pass or fail.</description></item><item><title>The questions that expose a weak architecture before award</title><link>https://hqt.org/blog/questions-that-expose-a-weak-architecture/</link><guid>https://hqt.org/blog/questions-that-expose-a-weak-architecture/</guid><pubDate>Wed, 25 Feb 2026 08:00:00 +0000</pubDate><category>Public Sector</category><description>A question set for reviewing a vendor software architecture before award, and the answers that show a design has not been thought through.</description></item><item><title>How a council member reads your IT budget request</title><link>https://hqt.org/blog/reading-an-it-budget-request-as-a-council-member/</link><guid>https://hqt.org/blog/reading-an-it-budget-request-as-a-council-member/</guid><pubDate>Wed, 18 Feb 2026 08:00:00 +0000</pubDate><category>Public Sector</category><description>What the line items in an IT budget request mean, the questions a governing body should ask, and what a strong request contains.</description></item><item><title>The uptime number is the least important part of a service level agreement</title><link>https://hqt.org/blog/service-levels-that-can-be-enforced/</link><guid>https://hqt.org/blog/service-levels-that-can-be-enforced/</guid><pubDate>Wed, 11 Feb 2026 08:00:00 +0000</pubDate><category>Public Sector</category><description>An availability target is enforceable only when the contract defines what counts as available, how it is measured, and what a miss costs.</description></item><item><title>Discovery should be a small fixed-price project, not a free sales exercise</title><link>https://hqt.org/blog/discovery-should-be-a-small-fixed-price-project/</link><guid>https://hqt.org/blog/discovery-should-be-a-small-fixed-price-project/</guid><pubDate>Wed, 28 Jan 2026 08:00:00 +0000</pubDate><category>Company</category><description>How we structure a two to four week discovery engagement, what it delivers, and why a fixed price keeps the findings honest.</description></item><item><title>What a screen reader finds that an accessibility scanner does not</title><link>https://hqt.org/blog/what-a-screen-reader-finds-that-a-scanner-does-not/</link><guid>https://hqt.org/blog/what-a-screen-reader-finds-that-a-scanner-does-not/</guid><pubDate>Wed, 21 Jan 2026 08:00:00 +0000</pubDate><category>Engineering</category><description>A practical walkthrough of testing an agency site with a screen reader: what to check, what breaks most often, and how to order the fixes.</description></item><item><title>Design audit logs around the questions you will be asked</title><link>https://hqt.org/blog/designing-audit-logs-around-auditor-questions/</link><guid>https://hqt.org/blog/designing-audit-logs-around-auditor-questions/</guid><pubDate>Wed, 14 Jan 2026 08:00:00 +0000</pubDate><category>Security</category><description>Audit logging works best designed backward from the few questions auditors ask, with retention set by policy rather than by tool defaults.</description></item></channel></rss>