Hackathon reporting surface
Hackathon reporting dashboard
This page is the direct analytics view for the hackathon event day. It focuses on telemetry quality, consent impact, and live competition behavior without mixing in warehouse status.
About this page
Generated 10 May 2026, 07:01 UTC
Production is pinned to the archived hackathon event day (25 March 2026), so this GA4 page ignores newer vote.rajeevg.com resets or replay runs.
Metric and field definitions
Plain-English definitions for every GA4 metric and field used on this page.
Metric and field definitions
Plain-English definitions for every GA4 metric and field used on this page.
Tracked eventsderivedOpen
All analytics events GA4 returned for the hackathon host on the live event day.
How to read it
Use this as an activity volume number, not as a vote or judge total.
Tracked usersderivedOpen
Distinct GA4 users seen on vote.rajeevg.com during the live event day.
How to read it
This is an analytics audience count, not the official list of judges.
Recorded votesderivedOpen
Votes saved by the live voting app, independent of analytics consent.
How to read it
Use this as the official vote ledger. It is the total the public scoreboard is based on.
Tracked vote submissionsderivedOpen
GA4 vote_submitted telemetry that matched the live competition entries for the same event day.
How to read it
Use this for trend and measurement quality, not as the final vote count.
Analytics coveragederivedOpen
Tracked vote submissions divided by recorded votes.
How to read it
This shows how much of the real vote ledger is visible in analytics.
More derived metrics (5)
Successful judge sign-insderivedOpen
judge_auth_completed events captured on the live event day.
How to read it
Use this to see successful sign-ins GA4 observed, not the final list of judges.
Vote modal opensderivedOpen
vote_dialog_viewed events that matched the live competition entries.
How to read it
Use this to understand demand for the scoring modal before submissions are counted.
Average vote scorederivedOpen
Average score from tracked submissions for that entry on the live event day.
How to read it
Read it as a signal from tracked votes only, not as the official scoreboard average.
Granted page loadsderivedOpen
Tracked page_context rows where analytics consent was stored as granted.
How to read it
Use this as a telemetry-state count for tracked page loads, not as a user count or explicit banner-choice total.
Denied page loadsderivedOpen
Tracked page_context rows where analytics consent was stored as denied.
How to read it
Use this as a telemetry-state count for tracked page loads, not as a user count or explicit banner-choice total.
Judging state
dimension
customEvent:competition_status
The judging phase the app was in when the event fired.
Typical values or units
preparing, open, finalized
How to read it
Use this to separate setup activity, live judging, and post-results viewing.
Viewer role
dimension
customEvent:viewer_role
The kind of visitor the app believed it was serving when the event fired.
Typical values or units
public, judge, manager
How to read it
Use this to separate public traffic from judges and the organiser account.
Entry name
dimension
customEvent:entry_name
The project name attached to a scoring or voting event.
Typical values or units
What's My Frog, ModelLens, Brief It
How to read it
Use this for human-readable labels in entry-level reporting.
Entry slug
dimension
customEvent:entry_slug
The stable identifier for a hackathon project.
Typical values or units
what-s-my-frog, modellens, brief-it
How to read it
Use this to join related events for the same project even when labels vary slightly.
Analytics consent state
dimension
customEvent:analytics_consent_state
Whether the event reached GA4 with consent marked as granted or denied.
Typical values or units
granted, denied, blank
How to read it
Blank does not mean a third user choice. It means GA4 stored the event without this parameter value.
More schema fields (11)
Consent preference
dimension
customEvent:consent_preference
The explicit preference recorded when a consent-change event fired.
Typical values or units
granted, denied
How to read it
Use this only on consent_state_updated events, not as a general session-level consent flag.
Consent source
dimension
customEvent:consent_source
Which UI route or control produced the consent change.
Typical values or units
default, banner_accept, banner_decline, preferences
How to read it
Use this to see where people actually made or changed their consent choice.
Entry open for voting
dimension
customEvent:entry_voting_open
Whether the specific project was open to new votes when the event fired.
Typical values or units
true, false
How to read it
Use this to distinguish normal scoring opportunities from closed or paused states.
Viewer eligible to vote
dimension
customEvent:viewer_can_vote
Whether the signed-in viewer was allowed to vote on the project tied to the event.
Typical values or units
true, false
How to read it
Use this to separate real vote opportunities from blocked states.
Viewer already voted
dimension
customEvent:viewer_has_vote
Whether the viewer had already submitted their locked score for that project.
Typical values or units
true, false
How to read it
Use this to separate fresh vote opportunities from already-finished judging.
App section
dimension
customEvent:analytics_section
Which part of the product emitted the event.
Typical values or units
scoreboard, vote_dialog, judge_auth, manager_controls
How to read it
Use this to understand where activity happened inside the app.
Device layout
dimension
customEvent:viewport_category
The responsive layout bucket the app assigned to the session.
Typical values or units
mobile, tablet, desktop
How to read it
Use this to compare behavior across phone and desktop layouts.
Upload method
dimension
customEvent:upload_method
How the organiser chose the workbook file.
Typical values or units
click, drag_drop
How to read it
Use this only for workbook management events.
Vote score
metric
customEvent:score
The single 0 to 10 score chosen in a vote event.
Typical values or units
0-10 points
How to read it
Use this for average-score and score-distribution analysis.
Total score snapshot
metric
customEvent:aggregate_score
The running total score bundled into certain event payloads.
Typical values or units
score points
How to read it
Treat this as a snapshot field, not as the authoritative final leaderboard.
Vote count snapshot
metric
customEvent:vote_count
The running number of votes bundled into certain event payloads.
Typical values or units
count
How to read it
Treat this as a snapshot field, not as the authoritative final vote ledger.
What this page includes
Fresh scope notes, data boundaries, and any proven caveats for this reporting surface.
What this page includes
Fresh scope notes, data boundaries, and any proven caveats for this reporting surface.
- Production is pinned to the archived hackathon event day (25 March 2026), so this GA4 page ignores newer vote.rajeevg.com resets or replay runs.
- Live mode is reading directly from the shared GA4 property through the official Google Analytics Data API client, scoped to Hackathon event day (25 March 2026).
- Warehouse reconciliation: the modeled BigQuery dataset currently has 1080 landed rows across 8 tables, and analytics_498363924 currently has 74 landed raw export tables.
- The route is filtered to vote.rajeevg.com so the hackathon app stays separated from rajeevg.com content analytics even though both live on the same property.
- Source of truth: the hackathon snapshot reports 297 persisted votes across 9 entries and 37 judges at https://vote.rajeevg.com/api/reporting/public-summary.
- Tracked analytics coverage: GA4 currently shows 172 vote_submitted events, a gap of 125 versus the persisted vote total (58% coverage).
- The gap is expected because vote_submitted is client-side telemetry behind analytics consent, while the persisted vote total comes from the live competition snapshot that powers the public scoreboard.
- Entry-level cards exclude 4 GA4-only entries that do not match the live competition slate, removing 4 tracked submit rows and 5 dialog-view rows from the visible entry analysis.
Consent and measurement
Tracked page loads grouped by the analytics consent state recorded on page_context during the event day.
44
181
44 tracked page loads carried a granted analytics state and 181 carried a denied analytics state. This card is counting page_context rows, not people and not explicit accept-or-deny actions, so it should not be compared directly with the 35 tracked users headline.
4,936
Total hackathon analytics events returned in the current reporting window.
35
Distinct users observed on the hackathon reporting surface in the same window.
297
Authoritative vote rows from the live voting app snapshot that powers the public scoreboard.
168
GA4 vote_submitted events captured as analytics telemetry for the same window.
57%
Tracked vote submissions divided by the source-of-truth recorded vote total.
Top tracked events
The biggest GA4 event groups for the live event day, shown as telemetry rather than as warehouse modeling.
vote_score_selected
judge · (not set)
300
22 users
vote_dialog_viewed
judge · open
205
22 users
vote_submit_started
(not set) · (not set)
172
22 users
vote_submitted
(not set) · (not set)
172
22 users
scoreboard_view_changed
judge · (not set)
46
9 users
More event groups (7)
vote_dialog_viewed
(not set) · open
44
18 users
vote_dialog_viewed
judge · (not set)
40
19 users
vote_score_selected
manager · (not set)
33
1 users
judge_auth_dialog_opened
(not set) · (not set)
28
25 users
judge_auth_email_requested
(not set) · (not set)
27
21 users
scoreboard_view_changed
manager · (not set)
25
2 users
judge_auth_dialog_opened
public · preparing
24
23 users
Entry-by-entry tracking
Real competition entries only, with GA4 demand, tracked submissions, recorded vote totals, and tracked average score.
What's My Frog
what-s-my-frog
30
21
36
58%
7.4
Brief It
brief-it
64
19
34
56%
5.5
Planet Killer
planet-killer
34
19
33
58%
6.7
Trafficker on Steriods
trafficker-on-steriods
26
18
33
55%
6.4
ModelLens
modellens
24
17
33
52%
6.6
More entries (4)
Autopull Aliance
autopull-aliance
79
19
32
59%
6.2
Audience Insights Generator
audience-insights-generator
33
19
32
59%
6.3
Taxo guard
taxo-guard
24
18
32
56%
6.2
Planet Assisstant
planet-assisstant
23
18
32
56%
6.0