Inspiration

In Texas, becoming a licensed journeyman electrician takes 8,000 supervised hours and one closed-book exam. The hours are the easy part. The exam is written against a code book that changes every three years, and the people sitting it are working full days on site beforehand. The courses that prepare you run $99 to $400 - real money when you're on helper's wages.

That gate is one of the last ladders someone can climb without a degree and without debt. We wanted to find out whether Gemini could make the climb cheap enough to be irrelevant as a barrier — not by cutting corners on quality, but by removing almost all of the company from the cost.

What it does

TradePass is exam prep for American electricians, $19 a month, covering eight state exams.

A candidate takes an adaptive diagnostic and gets a readiness estimate calibrated per exam section — an honest prediction of whether they'd pass today, and which section would fail them. They drill where they're weakest, sit full timed simulations under exam conditions, and can ask the AI tutor "why is this the answer?" on any question. The tutor's explanation is grounded in the specific code article the question comes from.

The questions are real work. A typical calculation item:

▎ A commercial building has a 208Y/120 V three-phase feeder supplying a continuous load of 30 kVA and a noncontinuous load of 15 kVA. What is the minimum required ampacity?

$$I = \frac{(30,\text{kVA} \times 1.25) + 15,\text{kVA}}{208,\text{V} \times \sqrt{3}} = \frac{52{,}500}{360.3} \approx 146,\text{A}$$

Every number in that calculation is re-executed in Python before the question is allowed to reach a candidate.

How we built it

Entirely on Google Cloud: Cloud Run, Firestore, Cloud Scheduler, Secret Manager, and the Gemini API.

Five agents run the business:

  • Content — Gemini 2.5 Flash writes practice questions against each state's published exam outline.
  • Verification — Gemini 2.5 Pro re-answers every question cold, never seeing the keyed answer, and must independently agree. Python then re-runs every calculation.
  • Tutor — Gemini 2.5 Flash explains any question at the candidate's level, citing the code article.
  • Support — Gemini classifies inbound email; Python recomputes refund eligibility from the account itself and issues the refund and cancellation with zero human involvement.
  • Ops — a nightly agent reviews the entire ad account, joins Google Ads spend to our own funnel, and computes cost-per-subscriber per keyword.

One rule holds it together: the model explains, the code decides. Gemini never gets the final say on anything that moves money or ships content.

The economics that follow are the point. The whole question bank — 4,362 serving items across eight state exams — cost about $455 of Gemini spend, roughly $0.104 per verified question. Cloud Run scales to zero when nobody's studying: $1.22 last month. Serving the entire business costs less than two subscriptions, and there are no operations staff. That is the entire reason the price can be $19 instead of $400.

Challenges we ran into

Our own numbers were wrong, more than once. Our analytics counted 147 internal test sessions as real users — all-time signups reported as 80 against 25 real, subscribes as 9 against 5. We inverted the exclusion rule from a denylist to an allowlist and corrected the figures downward before submitting. They now reconcile exactly against Stripe.

The transparency counter was lying in our favour. We publish how often a human had to intervene. It read 54. We'd been counting automated rejections as human work — overstating our dependence on people on the one metric meant to prove otherwise. It's 3, and we published what we got wrong on the page itself.

Our cost-per-question was understated 3.7×. We'd estimated $0.028 bottom-up from sampled token costs. Measured top-down against the actual billing console, it's $0.104 — the real pass rate was lower than assumed, verifier thinking-tokens had grown, and calculation topics burn repeated generate-verify cycles without ever filling. Ten cents makes the same argument as three cents and has the advantage of being true.

A support endpoint that could refund strangers' cards. For a period, /api/support/inbound accepted unauthenticated JSON — anyone who knew a subscriber's email could POST a refund request and have that person's card refunded and subscription cancelled. Now signature-verified, and it fails closed: with no secret configured it rejects everything rather than leaving a money-moving endpoint open.

Refunds that didn't finish. Refunding the charge alone left the Stripe subscription billing next cycle while our side had already locked the user out. Found in a live pressure test, not by a customer.

Distribution, which we have not solved. Blended customer acquisition cost is AUD 250 against AUD 108 of lifetime value — 2.3× underwater. Generic head terms are the culprit: one search term took AUD 363 across 115 clicks and produced zero subscribers, while specific exam-name intent converts at AUD 8.

Accomplishments that we're proud of

A verifier that overrules the generator 43.8% of the time. We've written 7,770 questions and thrown away 3,407. Those rejects were internally coherent and looked fine — without that gate they ship, and a candidate studies a wrong answer for a test they've paid to sit. We treat a high rejection rate as evidence the checks work, not as a yield problem.

Guardrails that are structural, not policy. The ads agent is authorised to act on the live account and runs nightly with --autopilot. It has applied zero changes without a human. It structurally cannot touch the daily budget: every operation it builds is asserted to be an ad-group-criterion op, and the run hard-fails if anything else appears.

Finding our own inflated numbers and correcting them down. In a competition judged partly on revenue evidence, that felt like the right instinct.

What we learned

Measure top-down. Every bottom-up cost estimate we made was optimistic, and every one was wrong in the same direction.

Restraint is a feature, not a gap. "Authorised to act, zero applied" is a stronger claim than full autonomy — but only if you show both halves. Alone, zero looks like something broken.

AI at creation time, not serving time. Front-loading Gemini spend into building a durable corpus is what produces a sub-$20/month floor and a price a helper can actually afford. It's an architectural decision, not a pricing one.

Supply is solvable; demand is the hard part. We can stand up a new state's question bank for $30–40. We cannot yet acquire a subscriber for less than they're worth. That asymmetry is the whole business now.

What's next for TradePass .. Time to Level UP!

NEC 2026. Texas exams switch on September 1. Our migrated bank is built and staged; the cutover lands August 28, ahead of the exam date, and the product already tells each candidate which code edition their exam will use based on when they sit it.

Fix the funnel economics. Kill the generic head terms, concentrate on exam-name intent where CAC is already profitable, and lean on SEO — three of our five subscribers arrived organically at zero cost.

More states, then more trades. WI, IA and OR next. The corpus architecture is trade-agnostic; plumbing and HVAC reuse it unchanged.

Show the work we're already doing. We compute per-topic mastery for every candidate and only render the section-level rollup. That detail is paid for and invisible — it should be on screen.

Exact cost accounting. Capture usage_metadata on every Gemini call so cost-per-question is measured, not estimated.

Built With

Share this project:

Updates

posted an update —

Congratulations to all deserving winners! Really hope the funding helps the winners scale and support their solutions to help many others. We are celebrating our #6 subscriber renewal today too! Will keep this going to help many more apprentices towards their dream job.

Log in or sign up for Devpost to join the conversation.

posted an update —

We are still cash-flow negative but there is good news to shared .. we earned our 8th subscriber yesterday! Zero churn so far; 6 x 2nd month renewals, one pending renewal and a brand new subscriber working towards their Texas journeymen electrician certification.

Spend: $26.51 total over 1 day(s), avg $26.51/day (cap $50/day) -- OK. Since your last check-in: clicks +0, impressions +20, conversions +0, cost -0.63 AUD. Funnel (since last stats reset, deltas since last check-in): visit: 1237 (+20) · diagnostic_click: 709 (+6) · diagnostic_start: 534 (+5) · diagnostic_complete: 269 (+2) · signup_start: 125 (+3) · checkout_click: 9 (+1) · subscribe: 8 (+1)

Log in or sign up for Devpost to join the conversation.

posted an update —

A few days back, our agentic adwords GTM monitoring agent finally fired autonomously based on defined goals for the agent!

The campaign shows some underperforming on-target keywords, particularly 'master electrician test prep' with impressions but no clicks. One off-target term, 'nec 2026 changes', has been identified for exclusion. Most other keywords have low volume, indicating a need for continued monitoring as the campaign gathers more data.

Suggested new negatives (not applied -- add manually): nec 2026 changes

Notes:

  • master electrician test prep: This term has 16 impressions but zero clicks. Consider reviewing ad copy relevance or bid strategy for this keyword.

LTV context: ~$70 contribution/subscriber at 4-month avg retention (financials.md) -- not an alert trigger, just for eyeballing CAC sanity once conversions show up.

Autopilot (5-day window 2026-09-04 to 2026-09-08):

Negatives added: nec 2026 changes

Bids adjusted: master electrician test prep $0.01→$0.30

Daily budgets are never touched by autopilot.

Log in or sign up for Devpost to join the conversation.

posted an update —

We just hit our 7th paying subscriber (thank you!) and every one of our first five, who have each now been through at least one full monthly renewal, has stayed subscribed with zero cancellations. It's a small cohort, but it's genuine, unprompted retention through a real billing cycle, not just initial signups, and an early sign the product delivers ongoing value worth paying for.

Log in or sign up for Devpost to join the conversation.

posted an update —

Finally! Our AdWords keyword and bid decisions were fully agentic: with a month of baseline data in hand, we finally had the AI triggered full autonomy today! Our AI reviews performance daily and adjusts keywords and bids on its own, within fixed limits, no human sign-off. The only thing a human still controls is the daily spend cap. Every action is logged and visible on our public transparency page. From today's daily report ...

Autopilot (5-day window 2026-09-04 to 2026-09-08): Negatives added: nec 2026 changes Bids adjusted: master electrician test prep $0.01→$0.30 Daily budgets are never touched by autopilot.

We are all (agentic) system go ...

Log in or sign up for Devpost to join the conversation.

posted an update —

GTM is tough (and the expensive part)! 5 subscribers in first 2-3 weeks .... zero for an entire week of promotion and ads ... then yay! One more resgistred user just subscribed! Great news is that all our 5 early adopters (Thank You!) have kept using our service ... we hope to keep this service going and scale up/letf-right :)

Log in or sign up for Devpost to join the conversation.

Submission history