Steps
Set up your API token
The tool requires a Recurse Center personal access token to authenticate with the API.Create a Or export it as an environment variable:
.env file in your project directory:The tool uses the
dotenv crate to automatically load .env files, so creating a .env file is the recommended approach.Run the generator
Execute the tool to fetch profiles and generate the VCF file:You’ll see live progress output as the tool works:
Watch the progress
The tool provides detailed feedback during execution:
- API initialization - Confirms connection to Recurse Center API
- Batch fetching - Shows progress as profiles are retrieved in batches of 50
- Profile processing - Displays current profile being processed and photo download status
- Completion summary - Shows total stats when finished
Find your VCF file
The tool creates a file named Output:
recursers.vcf in your current directory.File size varies depending on the number of profiles and how many include photos. Expect 10-15 MB for a typical full download.
What’s Included in Each Contact?
Each vCard in the generated file contains:- Full Name - Structured with first name and last name (
FNandNfields) - Email - Primary email address
- Phone Number - Normalized to readable format:
- US numbers:
(718) 769-2654 - International:
+44 20 7946 0958
- US numbers:
- Profile Photo - Base64-encoded image embedded directly in the vCard
- Social Links - GitHub, Twitter, LinkedIn, and personal website URLs
- Company Info - Organization name and role (if provided)
- Batch Affiliation - Recurse batches as categories (e.g., “Recurse W2 ‘23”)
- RC Profile Link - Direct link to their Recurse Center directory page
- Pronouns - Listed in the notes field
Understanding the Progress Indicators
Spinner Animation
The tool uses an animated spinner (⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏) to show active processing. Fromsrc/main.rs:46:
Status Messages
Each status message shows:- Current action (e.g., “Processing 23/50”)
- Profile name being processed
- Current phase (e.g., “downloading photo…”)
- Elapsed time in seconds or minutes
Summary Statistics
After completion, you’ll see:- Contacts - Total number of profiles processed
- With photos - How many contacts include embedded photos
- File size - Size of the generated VCF file in MB
- Time - Total execution time
src/main.rs:409-420:
Troubleshooting
Error: RECURSE_PAT environment variable not set
Make sure you’ve either:- Created a
.envfile withRECURSE_PAT=your_token - Exported the variable:
export RECURSE_PAT=your_token
src/main.rs:323-325:
Error: Failed to create API client
This usually means:- Your token is invalid or expired
- Network connectivity issues
- The Recurse Center API is temporarily unavailable
- Verify your token at recurse.com/settings/api
- Check your internet connection
- Wait a few minutes and retry
Slow Performance
The tool downloads profile photos for each contact, which can take time:- Expect ~1-2 seconds per profile
- 250 profiles typically take 3-5 minutes
- Progress is shown in real-time
- Check your internet connection speed
- The spinner should still be animating if the process is active
- Wait for the timeout or press Ctrl+C to cancel
Error: Failed to write VCF data
This means the tool couldn’t createrecursers.vcf in the current directory:
- Check write permissions:
ls -la - Ensure you have disk space available:
df -h . - Try running from a different directory
Next Steps
API Reference
Learn about the Recurse Center API and available endpoints
Data Types
Deep dive into the vCard 3.0 specification and field structure
Troubleshooting
Get help with common issues and errors
GitHub Repository
View the source code and report issues
Tips & Tricks
Re-running the Generator
If you run the tool again, it will overwrite the existingrecursers.vcf file. This is useful for:
- Getting updated profile information
- Adding new Recursers who joined recently
- Fixing any import issues
Before re-importing, you may want to delete the previously imported contacts from your contacts app to avoid duplicates.
Filtering Profiles
The current version fetches all Recurse profiles. Future versions may support filtering by:- Specific batches
- Location
- Search queries
- Custom date ranges
ProfileSearchParams (src/rc_api.rs:318-327).
Large Imports
For large contact lists (500+ profiles):- Some contacts apps may take several minutes to import
- iOS sometimes processes imports in the background
- Google Contacts handles large imports well
- Consider importing to a specific group/label for organization