The She Codes Data Platform helps She Codes Australia manage and understand its community, mentors, events, participation and impact. What started as dashboard and data work grew into a substantially broader system supporting different user groups and operational workflows — experiences for the community, for mentors, for administrators, for organisational leadership, and for onboarding and account claiming.Its purpose was connective: bringing together data that had historically lived in several separate operational systems, so the organisation could see people, participation and mentor engagement in one place.The repository belongs to She Codes Australia and contains internal systems, so this case study describes architecture and engineering problems rather than organisational data. No participant records, personal identifiers or account counts appear here.
My role
I designed and built the platform for She Codes Australia, starting under a development contract and extending the work through substantial additional contribution beyond it. I built the system connecting several operational data sources on Supabase/PostgreSQL, with attention to authentication, data integrity and privacy-conscious handling of participant data, and delivered a full handover at the end of the engagement.The work was full-stack, data and platform development:
TypeScript/React application development, with role-specific experiences;
Supabase/PostgreSQL data modelling and data-quality investigation;
person and identity resolution;
mentor records, events and attendance, mentor points and recognition;
onboarding and account-claiming workflows, consent handling and authentication behaviour;
administration workflows and reporting;
database repair and reconciliation, duplicate-record investigation and safe record-merging approaches;
privacy review and permissions/access review; and
production debugging.
A large part of the work was investigating what the system actually does under unusual or historical data conditions — rather than assuming the intended, ideal user flow describes every account in the database.
Supabase and PostgreSQL, with Supabase Auth and Row Level Security
Next.js API routes and Deno/TypeScript Supabase Edge Functions
Python 3.11 automation
GitHub Actions for scheduled workflows
Netlify deployment
Cursor as the primary AI-assisted development and investigation environment
Scheduled jobs and background functions kept the data current rather than leaving it to depend on interactive use alone.
The interesting problem: identity resolution
The technically richest problem in this platform is deciding when two records are the same person.One real person may historically appear across multiple systems with different IDs, different email addresses, old and new records, platform-specific identifiers and partially overlapping profile information. Resolve those records wrongly and you corrupt relationships that reach into attendance, mentor history, transactions and authentication.That forces careful reasoning about distinctions the data does not always make for you:a person · an account · an email address · a mentor record · an external-system identityThese are five different things, and historical data does not reliably keep them apart. Data integrity and controlled reconciliation became a major component of the work as a result.
Authentication, permissions and privacy
The system uses Supabase authentication and PostgreSQL Row Level Security. Security-related work included authenticated role-based access, mentor account claiming, email verification, explicit dashboard consent, reviewing differences between manually created and self-claimed accounts, investigating access-control edge cases, RLS behaviour, server-side service-role operations, privacy review, and checking for unintended disclosure through public views.One privacy audit surfaced an edge case worth generalising: the intended consent workflow and the actual behaviour of manually created historical accounts did not align. The intended flow was correct — but it described accounts created through it, and not every account in the database had been created that way. The remediation was to reason from the data as it exists rather than from the flow as designed.
AI-assisted workflow
Development combined several AI tools rather than relying on one. Cursor was the primary AI-assisted development and investigation environment, Supabase AI supported schema- and query-level reasoning inside the database environment, and ChatGPT supported broader investigation and cross-referencing outside the IDE.Because investigations moved between those tools, I developed a cross-tool continuity workflow: verified schema understanding, constraints, findings, assumptions and unresolved questions are carried forward when switching tools, so the next environment starts from established context instead of re-deriving it.AI assistance supported navigating complex parts of the codebase, tracing behaviour across routes and database functions, investigating bugs, interpreting TypeScript and SQL, developing features, generating candidate SQL for investigation, identifying dependencies, reviewing authentication and consent flows, reasoning about database relationships, developing controlled repair procedures, documenting findings and reviewing implementation options.The engineering responsibility remained mine. For potentially destructive data work, AI-generated SQL is not treated as inherently safe. The working pattern was:
inspect the relevant schema and code;
identify foreign-key and dependency relationships;
run diagnostic queries;
rehearse the proposed change;
verify the affected records;
preserve audit/history information where required;
apply the smallest appropriate change; and
verify again afterwards.
I also deliberately kept lessons from failed or imperfect AI-assisted runs, so later work benefited from earlier debugging instead of rediscovering the same problems.
Outcome
designed and built a data platform bringing several operational data sources together on Supabase/PostgreSQL;
Next.js/React/TypeScript application development with role-specific experiences;
substantial PostgreSQL/Supabase work;
authentication and account-claim workflows;
consent and privacy investigation;
person/identity reconciliation, historical-data repair and constraint-aware database changes;
mentor recognition and points workflows;
reporting and administrative tooling;
cross-tool AI context continuity for complex investigations; and
a full handover at the end of the engagement.
The work spans a large historical mentor and community dataset.Repository: private She Codes Australia repository. The platform is not currently active, so there is no public deployment to link.