Case study · crow_code_

Idea to live product in 28 hours.

DA Notice sends NSW tradies a weekly SMS of council development approvals, filtered to their trade and their suburbs. Built, deployed, and loaded with real data in a single sprint. Four councils, over a thousand approvals, no team, no agency, no pre-existing codebase.

Product
DA Notice
Stack
Flask · SQLite · Gunicorn · Caddy
Market
NSW tradies
Price
$35 / month
Built by
crow_code_
28h
Idea to live product
4
Councils live at launch
1,131
Real approvals in the database
34
Commits in the sprint

The opportunity

Public data. Zero packaging.

Every council approval is on public record the moment it is lodged. Tradies who find jobs early win them. Nobody was connecting those two facts.

Before

NSW tradies find work by word of mouth, cold calls, and driving past sites. The planning portal exists, but it means knowing what to search, how to filter, and checking it by hand every week.

A plumber who hears about a dwelling approval first knocks on the door first. Nobody was doing that systematically.

After

Every Monday morning a text arrives. Filtered to trade, filtered to suburb. Real addresses, real approval types, real lodgement dates. Thirty seconds to read.

One job from a single lead covers six months of the subscription. The economics are obvious without explanation.

The product

Built mobile-first.

A progressive web app that installs from the browser. Fat tile buttons made for a tradie's hands on a worksite.

DA Notice landing screen showing the count of approvals lodged in the last fortnight
The hook: every approval lodged in the last fortnight, on screen.
DA Notice My Feed filtered to a builder in Lake Macquarie with pipeline badges on each card
My Feed: filtered to trade and suburb, a pipeline stage on every card.

What was built

Full stack. No shortcuts on the substance.

Six systems, every layer built from the ground up in 28 hours of wall-clock time.

01 · Data

NSW ePlanning scraper

One undocumented endpoint covers all 128 NSW councils, found via a Planning Portal inspection. Polite rate-limiting, a daily cron, and a 45-day backfill to populate every region at launch.

02 · Categoriser

Trade categorisation engine

Maps raw approval text to twelve trade slugs: builder, electrician, plumber, carpenter, roofer, and more. Runs on insert, stored so a single approval can serve several trades.

03 · Geo

Suburb resolver

Maps raw API address strings to suburb slugs via postcode-plus-longest-substring matching. Handles title-casing, multi-suburb postcodes, and name collisions across 283 suburbs in five regions.

04 · Auth

Magic-link login

No passwords. The subscriber enters a mobile number, gets a single-use SMS link valid for ten minutes, and a session on verification. A dev bypass keeps testing off Stripe and Twilio.

05 · Payments

Stripe subscription checkout

The subscriber is created pending, sent to Stripe hosted checkout, and activated on a signature-verified webhook. No PII stored beyond what delivery needs.

06 · Pipeline

Built-in job pipeline

Saved, Chasing, Quoted, Done, Won: every stage change is a form POST, no JavaScript required. A contact manager per job, address copy, map deep-links, and SMS share on every approval.

What was overcome

Perceived hard vs actually hard.

Perceived

Getting the data. NSW councils use fragmented systems with no obvious central API.

Reality

One undocumented endpoint covers all 128 NSW councils, found in twenty minutes, no API key required.

Resolution

One scraper handles every current and future council. Adding a new one is a 30-minute task: a suburbs file, two lines of registry, a seed, a backfill.

Perceived

A mobile UI for tradies that feels native, not a web form on a phone.

Reality

Native radio and checkbox inputs are 20px on mobile, so the first service-area selector looked broken even with the logic correctly wired.

Resolution

Every input is visually hidden and the whole label becomes a 44px hit target. Suburb tiles, trade tiles, scope tiles: fat squares built for big thumbs, with a fallback for older browsers.

The product is real. The data is real.

DA Notice is live at danotice.com. Four councils, over a thousand approvals, a subscriber feed, a built-in job pipeline, and a weekly SMS engine that fires every Monday, built in 28 hours by one operator with no team and no pre-existing codebase.

View the live product