Skip to main content

Quickstart Guide

This guide will take you from zero to bookmarking your first opportunity in under 5 minutes.
What you’ll accomplish:
  • Create your FTB Hustle account
  • Complete personalized onboarding
  • Discover and explore opportunities
  • Bookmark your first opportunity
  • Access the application tracker

Prerequisites

Before you begin, make sure you have:
  • A valid email address
  • Access to a Google or LinkedIn account (optional, for OAuth)
  • A few minutes to complete onboarding
You must verify your email address if you sign up with email/password. Check your inbox for the verification email.

Step 1: Create Your Account

Visit ftbhustle.com and click Get Started or navigate to /login.

Sign Up Options

You have three ways to create an account:
Recommended: Sign up with Google for instant access.
// OAuth flow redirects you automatically
const signInWithGoogle = async () => {
  await authClient.signIn.social({
    provider: "google",
    callbackURL: "/opportunities",
    newUserCallbackURL: "/onboarding"
  });
};
1

Click 'Login with Google'

You’ll be redirected to Google’s secure login page.
2

Authorize FTB Hustle

Grant permission for FTB Hustle to access your basic profile info.
3

Complete Onboarding

New users are automatically redirected to /onboarding to set up their profile.

Step 2: Complete Onboarding

After creating your account, you’ll land on the onboarding page at /onboarding. This takes about 60 seconds and helps us personalize your feed. Onboarding Flow

Quest 1: Pick Your Path

Choose your role on the platform:

Student

You’re here to find opportunities and get unstuck. The platform is optimized for you.

Society Member

You share opportunities and run events for students. You can still browse everything.
// The role you select shapes your entire experience
type Role = "student" | "society";

const handleRoleSelect = (role: Role) => {
  setAnswers(prev => ({
    ...prev,
    role,
    // Society path keeps it light - no required education fields
    educationLevel: role === "student" ? prev.educationLevel : "",
    fieldOfStudy: role === "student" ? prev.fieldOfStudy : ""
  }));
};
Everything is optional except your role. You can skip any field and update your profile later.

Quest 2: Quick Basics (Optional)

Provide optional information to tune your feed:
  • Location: State or city (helps show nearby events)
  • Education Level: High School, Undergraduate, Postgraduate, PhD, or Other
  • Field of Study: Engineering, Business, Design, Data Science, or Other
// Location helps surface local opportunities
const answers = {
  state: "Maharashtra",  // Optional: state selection
  city: "Pune",          // Optional: or specific city
  educationLevel: "Undergraduate",
  fieldOfStudy: "Computer Science"
};

Quest 3: What Should We Prioritize?

Select opportunity types you’re interested in:
Choose what you want right now:
  • Internships
  • Hackathons
  • Scholarships
  • Competitions
  • Grants
  • Fellowships
  • Conferences
// Multi-select - pick as many as you want
const interests = {
  opportunities: ["Internships", "Hackathons", "Scholarships"],
  domains: ["AI/ML", "Web Development", "Product Management"]
};

Quest 4: You’re Set

Review your selections and click Start to complete onboarding.
1

Review your profile summary

Check the live preview on the right side showing all your selections.
2

Click 'Start'

Your preferences are saved automatically to your profile.
3

Redirected to /opportunities

You’ll land on your personalized opportunity feed.
// Your profile is saved on completion
await saveProfile.mutateAsync({
  persona: answers.role,
  locationType: answers.state ? "state" : "city",
  locationValue: answers.state || answers.city,
  educationLevel: answers.educationLevel,
  fieldOfStudy: answers.fieldOfStudy,
  opportunityInterests: answers.opportunities,
  domainPreferences: answers.domains
});

// Then redirect to opportunities
router.push("/opportunities");

Step 3: Discover Opportunities

You’re now on the opportunities page at /opportunities. This is your personalized feed. Opportunities Feed

Explore the Feed

The feed shows opportunities tailored to your profile:
Click the filter dropdown to show specific types:
  • All Opportunities
  • Hackathons
  • Internships
  • Scholarships
  • Grants
  • Competitions

Understanding Opportunity Cards

Each opportunity card shows:
  • Image Gallery: Visual preview (swipe for more)
  • Title & Organization: Who’s hosting the opportunity
  • Type Badge: Hackathon, Internship, Scholarship, etc.
  • Description: What it’s about and why it matters
  • Tags: Related domains and topics
  • Dates: Start date and deadline
  • Location: Where it’s happening (online/offline)
  • Actions: Bookmark, upvote, comment, share

Step 4: Bookmark Your First Opportunity

Found something interesting? Let’s bookmark it.
1

Find an opportunity you like

Scroll through your feed and click on an opportunity card to expand details.
2

Click the bookmark icon

Look for the bookmark icon in the actions bar at the bottom of the card.
3

Confirm it's bookmarked

You’ll see a success toast: “Added to bookmarks” and the icon will fill in.
4

Access your tracker

Navigate to /tracker to see all your bookmarked opportunities.

How Bookmarking Works

// Clicking bookmark adds to tracker
const handleBookmarkChange = async (id: string, newState: boolean) => {
  if (!session?.user?.id) {
    toast.error("Please log in to bookmark opportunities");
    return;
  }

  if (newState) {
    // Add to tracker
    addToTracker({
      id,
      opportunityId: id,
      title: opportunity.title,
      company: opportunity.organiserInfo,
      type: opportunity.type,
      deadline: opportunity.endDate,
      kind: "opportunity"
    }, "Not Applied", "opportunity");
  } else {
    // Remove from tracker
    removeFromTracker(id);
  }

  toast.success(
    newState ? "Added to bookmarks" : "Removed from bookmarks"
  );
};
Bookmarks are stored in the database and synced across devices. You can access them from anywhere.

Step 5: Use the Application Tracker

Navigate to /tracker to manage your bookmarked opportunities. Application Tracker

Tracker Features

Status Management

Update application status: Not Applied, Applied, Interview, Offer, Rejected.

Notes & Reminders

Add custom notes for each opportunity. Set reminders for deadlines.

Calendar Sync

View all deadlines in calendar view. Never miss an important date.

Details Modal

Click any opportunity to view full details, add notes, and update status.

Updating Application Status

// Track your progress through the application process
type ApplicationStatus = 
  | "Not Applied"
  | "Applied" 
  | "Interview"
  | "Offer"
  | "Rejected";

// Update status from the tracker
const updateStatus = async (id: string, status: ApplicationStatus) => {
  await fetch(`/api/tracker/${id}`, {
    method: "PATCH",
    body: JSON.stringify({ status })
  });
};

Next Steps

Explore Toolkits

Access curated learning resources to level up your skills.

Check Ungatekeep

Browse insider tips, templates, and resources shared by the community.

Customize Profile

Update your interests, education, and location preferences anytime.

Browse Internships

Dedicated page for discovering internship opportunities.

Troubleshooting

Check your spam folder. If it’s not there, go to /login and click “Forgot your password?” to request a new verification email.
Make sure you’re logged in. If the issue persists, try refreshing the page or clearing your browser cache.
Try adjusting your filters or updating your profile interests at /profile. New opportunities are added regularly.
Ensure you’re using a supported browser (Chrome, Firefox, Safari, Edge). Check that pop-ups aren’t blocked.

Congratulations! You’ve completed the quickstart. You’re now ready to discover opportunities, track applications, and level up your career. Questions? Check out the Authentication Guide or reach out via the feedback widget.