Project highlight · Digital tool · ISLA communications

Less time counting.
More time connecting.

Pulse is an Instagram analytics workspace I designed and built to make social media reporting lighter for a volunteer communications team, so more of our time goes into understanding our audience and less into copying numbers between screens.

Role: designer & developer Context: City of Sydney ISLA program Used for: @sydney.intstudents reporting Status: working prototype
Analysis levelsProfile · Post · Campaign
Data inputsAPI · Manual · Screenshot
OutputsDashboards · PDF reports
Design principleHuman review first
01 · Why I built it

Reporting was becoming the job, instead of supporting it.

The challenge

Instagram numbers live across account dashboards, individual post insights and screenshots. Turning them into a report meant a lot of manual transcription.

The response

One workspace that brings profile, post and campaign data together, compares them visually and exports a report the team can discuss.

The principle

Automation should handle the counting. People should handle the meaning, and the relationships with the community we serve.

02 · The workflow shift

Same report, different effort.

Toggle between the reporting process before Pulse and the process Pulse is designed to support.

    Step comparison shows design intent. Time saved has not yet been measured (see the evaluation plan in the full report).

    03 · Interactive demo

    Explore a sample reporting period.

    Switch the scenario and metric to see how Pulse compares formats and tracks weekly trends. All figures here are synthetic, so no real account is connected.

    Total reach, 6 weeks
    –
    Strongest format
    –
    Week 6 vs week 1
    –

    By content format

    Week by week

    Evidence boundary: Demo figures are illustrative and do not represent @sydney.intstudents or City of Sydney results.
    04 · AI-assisted input

    From screenshot to structured data, with a human check.

    Some insight figures only arrive as screenshots. Pulse sends the image to Gemini 2.5 Flash with a strict schema and instructions not to invent unseen values. The tricky part: a value that isn't visible gets stored as zero, so a reviewer has to tell "not shown" apart from a real zero.

    Post insights
    Reel · Week 3
    Accounts reached2,318
    Views4,905
    Likes212
    Shares0
    Saves47
    Illustrative mock-up, not a real post
    FieldExtractedStatus
    Press "Run extraction" to see the structured output.

    05 · What's inside

    One workspace, several levels of analysis.

    06 · How it works

    From raw inputs to a conversation about what worked.

    01 · Collect

    Connect an authorised Instagram account via the Graph API, or enter data manually.

    02 · Structure

    Normalise metrics; extract fields from insight screenshots into a typed schema.

    03 · Interpret

    Compare reach, engagement, audience and formats across posts and campaigns.

    04 · Share

    Dashboards and print-ready PDF reports for team review.

    Next.js 16React 19TypeScriptTailwind CSSRechartsDrizzle ORMPostgreSQLBetter AuthInstagram Graph APIVercel AI SDKGemini 2.5 FlashjsPDFVercel
    07 · Responsible design

    Built for trust, not just speed.

    Human oversight

    AI-extracted figures are checked against the source screenshot before they reach a report.

    Permissions & privacy

    Only authorised accounts connect. Token handling, data retention and third-party AI processing are documented before wider use.

    Evidence before claims

    Time saved, extraction accuracy and usefulness will be measured in a pilot before any impact is reported.

    08 · Next steps

    From prototype to evidence.

    NOWBuild

    Working prototype used for team reporting.

    NEXTValidate

    Test connections, exports and extraction against known values.

    THENPilot

    Structured trial with authorised team members.

    THENMeasure

    Time logs, accuracy, usability, decision examples.

    LATERShare

    Publish verified results, collaborators credited.