Inspiration

Most students we know have done genuinely impressive things: hackathons, research, side projects, internships. But their LinkedIn profiles are either empty or last updated a year ago.

The barrier is not lack of content. It's the blank page, the fear of sounding "try-hard", and the feeling that what you've done is not impressive enough to post about. Stride was built to fix exactly that.


What it does

Stride is a personal brand builder for students. Here's the flow:

  1. Onboard - set your content pillars, tone, and career goals in under 2 minutes
  2. Detect - Stride connects to your Google Calendar to surface post-worthy moments: events, projects, milestones
  3. Draft - Agnes AI writes a LinkedIn post in your voice, ready to review
  4. Publish - one click sends it live to LinkedIn

Nothing is posted automatically. You stay in control of every word before it hits LinkedIn.

Other features:

  • Posting streak tracker
  • Brand pillar coverage so you know where your content is thin
  • Collab mode to co-author posts with a teammate and reach both audiences

How we built it

Stack

Layer Technology
Hosting Vercel
Frontend HTML, CSS, Vanilla JS
Backend Python serverless functions
Database + Auth Supabase + Google OAuth
Post generation Agnes AI agnes-2.0-flash
Content moderation NVIDIA Nemotron
Integrations Google Calendar API, LinkedIn API v2

Agnes AI at the core

The entire post generation pipeline runs through Agnes AI's Flash model. It takes the user's selected hook, story bullets, CTA choice, and full personal brand profile (pillars, tone, goals) and drafts a LinkedIn post that sounds like them, not like generic AI output.

We call Agnes AI on every draft generation, with a dual-key fallback system. If the primary key times out within 5 seconds, the backup kicks in automatically.

Personalised to you.

During the onboarding process, we build up a persona based on the preferences and career aspirations of students.

Why lightweight frontend?

Plain HTML, CSS, and vanilla JS with no frontend framework. The AI and integrations do the heavy lifting, not the framework.


Challenges we ran into

Using Claude Code as our primary development tool was harder than expected. It required very precise prompts and careful iteration, and we brought in Codex at points to resolve bugs Claude Code introduced.

The Agnes AI integration was straightforward, but we hit intermittent timeout issues on the primary key. We built a fallback system with fast-fail logic so the backup kicks in within 5 seconds.

The trickiest part was Google Calendar. OAuth scope configuration, Supabase provider token handling, and session persistence across page reloads all had to work together before a single calendar event could appear on screen.

LinkedIn's API was also more restrictive than expected. Reading posts requires partner-level API access we could not get during the hackathon, so we switched to storing published posts in Supabase instead.


Accomplishments that we're proud of

The integrations are real. Google Calendar events actually appear on the dashboard. Posts actually publish to LinkedIn. The user's real name and profile photo come through from Google. This is not a prototype with placeholder data.

We are also proud of the onboarding-to-draft pipeline. A student can go from zero to a publishable LinkedIn post in under three minutes, and it genuinely sounds like them.


What we learned

Building with AI tools end-to-end gave us a ground-level view of where AI-assisted development is today. It is genuinely powerful for scaffolding and feature work, but it still requires a developer who understands what they are asking for and can catch what the AI gets wrong. Prompt quality matters on both sides: the prompts we give Agnes AI to generate posts, and the prompts we gave Claude Code to build the app.

Third-party OAuth integrations are where real projects live or die. The AI features were the fun part. Getting tokens, scopes, and session persistence right was where we spent most of our time.


What's next for Stride

The core loop works but there is a lot more signal we could use. A smarter moment detection system that understands which events actually deserve a post. Resume parsing to seed the initial profile. A proper mobile app so students can capture moments on the go. And longer term, a cohort view where a club or class can see each other's posting streaks and hold each other accountable. We built the admin dashboard skeleton for exactly this.

Built With

Share this project:

Updates