Applause. Consulting

Case study

Sweet TEA.

You can't file a ticket against the state's software. So we fixed the parts that cost people time — from the outside, in the browser, without touching TEA's systems.

Product
Sweet TEA — browser extension
Scope
Extension, district data, store packaging and review
Stack
Manifest V3 · vanilla JS · Chrome + Firefox from one codebase
Audience
Texas school and service-center staff living in TEA web apps

The problem: software you can't change and can't avoid

Texas school business staff spend their days inside a handful of Texas Education Agency web apps — TEAL, eGrants, EMAT, Grant Opportunities. The work gets done, but the apps charge a toll on the way. eGrants asks for a six-digit county-district number and gives you no way to look it up. EMAT's district picker has a long-standing bug: choose a district and the page reloads showing the one you had before. TEAL signs you out after nineteen idle minutes, and every app you had open goes with it.

None of that is fixable by the people it happens to. It's the state's software, on the state's timeline. The only place left to stand is the browser.

eGrants with 'we' typed into the CDN box and a dropdown of ten matching districts, each with its CDN number
eGrants' county-district number box, turned into a search. Two letters in, ten matches out.

What we built

Sweet TEA is a Manifest V3 extension that runs on exactly two domains — tea.state.tx.us and tea.texas.gov — and does nothing anywhere else. One codebase ships to both Chrome and Firefox. On TEA pages it adds four things: district search by name in eGrants, a district switcher in EMAT that loads the district you asked for, a Copy Link to Grant button on Grant Opportunities pages, and an opt-in hold on the TEAL session with a visible countdown.

Every one of those is drawn on top of a page the agency owns. Nothing is submitted that a person couldn't have submitted themselves, no credentials are read, and there is no server on our side to hold anyone's data.

The EMAT bug, and why the obvious fix doesn't work

EMAT runs on PeopleSoft. Selecting a district calls the app's own submitAction routine, which prefers an AJAX partial postback — and that path quietly drops the field carrying your choice, so the server re-renders the district you were already on. Reproducing the click faithfully just reproduces the bug.

What works is posting the identical action as an ordinary full-page form submission. Same request the app meant to make, delivered the way the app's own code stopped using. Verified live in both directions from a cold load.

The picker's list of districts is fetched from EMAT's own lookup at runtime rather than from the bundled district file, because EMAT only accepts districts your account is allowed to view — a service-center login sees its region and nothing else. Asking the app means the list is automatically right for whoever is signed in, instead of offering choices that fail on submit.

The EMAT District Start Page with Sweet TEA's district switcher open, listing districts by CDN and name, and a 'Currently Displayed' label beside the box
The switcher and the “Currently Displayed” label are Sweet TEA; everything else is EMAT. Demonstration account — district names invented.

The session hold, and taking the tradeoff seriously

TEAL's idle logout is enforced in the browser: a jQuery idle timer bound to the document, with a nineteen-minute countdown and a redirect to the logout page at the end. Pinging the server does nothing — the clock isn't there. Holding the session open means satisfying the timer on the page, which Sweet TEA does with synthetic activity while also keeping the server-side session warm.

That is, plainly, less secure than the agency's default, so the feature is built to be hard to leave on by accident. It's off by default. Turning it on requires acknowledging the tradeoff once, in writing. And it always expires: thirty minutes, two hours, or when the last TEA tab closes — there is no "forever" setting, so a machine left unattended goes back to TEA's normal timeout. An optional badge shows both clocks at once: when TEAL would sign you out, and when Sweet TEA will stop holding the door.

Those three properties weren't caution for its own sake. A store reviewer looking at an extension that defeats a government portal's session timeout is right to ask what stops abuse, and "the user chose it, it's bounded, and it's visible" is an answer you can only give if you built it that way from the start.

The part you don't see

TEA spans two unrelated root domains with nothing in common but the agency's name, so the extension's routing has to know which app it's looking at before it renders anything. Grant links come from a maintained public sheet, cached in the browser with a short TTL so a slow fetch never blocks the button. Then the unglamorous rest: host permissions justified line by line for review, a privacy policy that matches the architecture rather than describing an aspiration, and notes on what breaks the next time the state ships a redesign — because it will.

Sweet TEA is live in the Chrome Web Store and runs in Firefox from the same source. Features and screenshots on the Sweet TEA page, or get it from the Chrome Web Store.

Start your project

Not affiliated with, or endorsed by, the Texas Education Agency. TEA, TEAL, eGrants and EMAT are names of Texas Education Agency systems.