Skip to content
GFD GFD Cyber Authority Intelligence See the league table
Orient ยท You are on Base Camp

Start with the market map before judging your own gap.

See the league table

greenflagdigital.com / cyber / roadmap

Product owner + tech lead board

Build progress, launch risk, and next moves in one place.

Three-shot build: local foundation, full prototype port, launch prep. This board is backed by data/roadmap.json, so future work updates the product roadmap and QA state at the same time.

Overall progress
67%

Updated 2026-06-12
Target: cyber.greenflagdigital.com

20done
1active
6next
3blocked
Shot 1

Checkpoint board.

4 checkpoints

Status Workstream Checkpoint Product View Tech View Commit QA / Gate
Done Source package
Pull Drive handoff materials into repo
drive-handoff
All active prototypes, starter docs, company JSON, fonts, and handoff files are local. Drive materials copied into repo; expired signed-link docs replaced with local build notes. cc78ed3 Files present; expired XML stubs removed.
Done Build system
Scaffold Astro static site
astro-foundation
Kinsta-ready local Astro app exists. Static output, scripts, lockfile, fonts, shared layout, and build config in place. cc78ed3 Build passes.
Done Prototype fidelity
Restore Cowork Base Camp design
basecamp-fidelity
Home page matches the Cowork prototype instead of a redesigned interpretation. Index page renders from prototype source with internal URL rewrites. 696fa9d Live HTML contains original prototype classes and copy.
Done Data rendering
Render company ranking data from JSON
json-rankings
The rankings page is powered by the 50-company dataset. League table and three profile routes render from data/companies.json. cc78ed3 Internal links resolve; 50 companies detected.
Shot 2

Checkpoint board.

12 checkpoints

Status Workstream Checkpoint Product View Tech View Commit QA / Gate
Done Conversion
Build fast Authority Score assessment
authority-score-funnel
CEOs, CFOs, CMOs, and comms leads can click through a fast, reality-grounded quiz. 12-question assessment model, 4 field-note checkpoints, 3 result bands, static no-persistence flow. 7bb8578 Assessment JSON validates; /score/ returns 200.
Done Data architecture
Define underlying data model
data-model
We know what entities the live intelligence system needs. Company, person, signal, coverage, visitor, referral, and assessment-response model documented. 7bb8578 Model file committed under data/assessment.
Done Integrations
Map live API stack
api-stack
Clear path from static reviewed JSON to live refreshes. Ahrefs, GSC, HubSpot, coverage/news, funding, people, visitor-intent, and AI citation layers mapped. 7bb8578 docs/api-data-stack.md committed.
Done QA
Record smoke-test baseline
smoke-qa
We have a QA receipt instead of relying on memory. Build, link scan, assessment validation, and 10 route checks documented. 7bb8578 docs/qa/smoke-test-2026-06-10.md committed.
Done Product ops
Create visual progress table
roadmap-board
Roadmap and checkpoints are visible in the site while we build. JSON-backed /roadmap/ page with status, owner view, tech view, commits, and QA gates. ec941bc Build passes; /roadmap/ returns 200; counts validate.
Done Prototype port
Port full package page
package-port
The quiz result has a strong destination page with matrix and calculator. Port gfd-cyber-ultimate.html to /package/ with calculator JS intact. 59c872f Prototype source rendered through Astro with route rewrites.
Done Prototype port
Port press tracker
tracker-port
Coverage tracker becomes a real launch surface, not a placeholder. Port gfd-press-tracker.html to /tracker/ and route CTAs to /score/. 59c872f Prototype source rendered through Astro with route rewrites.
Done Prototype port
Port media index
media-index-port
Media map becomes usable as free intelligence. Port gfd-media-index.html to /media-index/ with no public contact info. 59c872f Prototype source rendered through Astro with route rewrites.
Done Prototype port
Bring rankings page to prototype fidelity
rankings-fidelity
Rankings look like the Cowork market assessment page while staying JSON-rendered. Replace placeholder-style rankings with prototype CSS/structure plus JSON rows. 59c872f Prototype shell ported; rows generated from data/companies.json.
Done Prototype port
Port company profiles
profile-port
CrowdStrike, Cyera, and Palo Alto profiles match the researched prototypes. Extract prototype profile data into data/profiles/*.json and render with one [slug] template. 59c872f Prototype source rendered through Astro with route rewrites.
Done Backend architecture
Define backend-to-revenue flow
backend-revenue-blueprint
Clear map from frontend visitor to lead, deal, signed client, fulfillment, PM, and AM. Revenue lifecycle JSON plus backend architecture doc define system ownership and data flow. f426741 Architecture docs committed; roadmap includes backend-to-revenue checkpoints.
Done Conversion
Build quoter / bid-builder flow
quoter-builder
Prospects can self-size the likely route without treating the number as a binding proposal. Static /quote/ bid-builder renders from data/assessment/bid-builder.json and outputs route, drivers, score, and HubSpot hidden payload preview. this-commit Build passed with local Rollup WASM workaround; browser click-through produced route, score, and payload; static link scan passed.
Shot 3

Checkpoint board.

9 checkpoints

Status Workstream Checkpoint Product View Tech View Commit QA / Gate
Done Revenue ops
Define HubSpot score-capture contract
hubspot-score-contract
We know exactly what quiz and quoter data should become CRM context. Contact, company, assessment, deal fields, hidden payload, and workflow draft documented. 59c872f Contract file and implementation notes committed; live form remains blocked on portal/form details.
Done Revenue ops
Document HubSpot form flow
hubspot-form-flow
Clear answer for what Joe creates in HubSpot and what Codex wires in Astro. docs/hubspot-form-flow.md maps custom Astro UI, Forms API handoff, supplied HubSpot IDs, manual field creation, and scripted property creation. this-commit Docs cross-reference score and quote payload contracts plus property creation script.
Done Revenue ops
Build custom lead-capture UI
custom-capture-ui
Prospects complete a polished GFD capture step instead of seeing a generic HubSpot embed. Quote result includes validated contact fields, hidden route payload merge, HubSpot Forms API adapter, and local preview mode. 2f0f884 Browser smoke and build passed; live HubSpot IDs wired in follow-up commit.
Active Revenue ops
Map HubSpot lead, company, assessment, and deal properties
hubspot-lead-payload
Custom capture UI is wired to the HubSpot form endpoint; next step is one controlled live test submission. Portal ID 1186707 and form GUID 45db979f-2e05-4ba5-bf39-337e61913317 are configured in /quote/ submit adapter. this-commit Needs live form submission test after confirming all HubSpot fields exist on the form.
Next Deployment
Configure Kinsta Static Site
kinsta-static
cyber.greenflagdigital.com can go live. Build command npm run build; publish directory dist; DNS to Kinsta target. pending Run production build after remote connected.
Next QA
Visual QA across desktop/mobile
visual-qa
Launch pages look intentional and match prototypes. Need browser screenshot pass for home, score, package, rankings, tracker, media index. pending Pending after prototype ports.
Next QA
Performance and SEO spot checks
lighthouse
No obvious launch-day performance or metadata problems. Run Lighthouse or lightweight HTML checks on production build. pending Pending final page set.
Blocked Integrations
Connect HubSpot score capture
hubspot-fields
Assessment answers can become leads and routed follow-up. Needs approved HubSpot form/embed or CRM private app fields. pending Blocked on HubSpot portal/form details.
Blocked Deployment
Create GitHub remote and push
github-remote
Repo is ready to connect to Kinsta. Needs GitHub repo URL or connector action. pending Local git is clean; remote not configured.
Post-launch

Keep it alive.

5 checkpoints

Status Workstream Checkpoint Product View Tech View Commit QA / Gate
Done Automation
Build autonomous NYT/WSJ coverage goal runner
coverage-goal-runner
A deterministic coverage desk now publishes the latest source-backed cyber funding coverage state and blocker list. data/coverage-goal config and published JSON, Node runner, validator, cap/overflow logic, /coverage/ page, QA scan, and 2-hour GitHub Actions workflow. this-commit Unit tests passed; dry run stopped with source blockers; first local run wrote blocker baseline; build/link/browser checks passed.
Next Automation
Automate data refresh
api-automation
The intelligence layer can stay fresh without hand updates. Add scripts and GitHub Actions for API export -> staging -> reviewed JSON. pending Do after static launch and API access decisions.
Next Revenue ops
Define sales-cycle handoff automation
sales-cycle-handoff
Lead becomes a deal with tasks, owner, assessment summary, and next step. HubSpot workflow creates/updates contact, company, deal, notes, and owner tasks after qualified conversion. pending Requires HubSpot pipeline and owner rules.
Next Delivery ops
Define closed-won fulfillment handoff
fulfillment-handoff
Signed client triggers kickoff, PM setup, reporting cadence, and account ownership. Closed-won HubSpot deal triggers PM workspace, client folder, kickoff checklist, recurring reporting, and AM tasks. pending Requires chosen PM workspace and kickoff template.
Blocked Automation
Connect approved NYT and WSJ source access
coverage-source-access
The runner is ready, but real NYT/WSJ coverage requires approved source credentials or licensed export access. Needs NYT_API_KEY plus WSJ_APPROVED_EXPORT_PATH, FACTIVA_EXPORT_PATH, or DOW_JONES_EXPORT_PATH in GitHub Actions. pending Blocked asks are visible in data/coverage-goal/published.json and /coverage/.