Skip to content

Commit 945d7b3

Browse files
authored
Merge pull request #77 from RECTOR-LABS/fix/resume-cv-sanitize
fix: correct and NDA-sanitize resume/CV data
2 parents 203f6db + 4577630 commit 945d7b3

5 files changed

Lines changed: 38 additions & 37 deletions

File tree

data/achievements.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@
2929
description: Autonomous 4-layer signal fusion engine detecting Solana narratives daily. Z-score anomaly detection, LLM clustering, and build idea generation from onchain, developer, social, and market signals.
3030

3131
- slug: adrena-trading-arena
32-
title: Adrena Trading Arena
32+
title: Adrena AI Agent Arena
3333
type: bounty
3434
place: 2nd
3535
prize_amount: 1500
3636
prize_extras: null
37-
event: Adrena x Autonom Trading Competition
37+
event: Adrena x Autonom Competition
3838
event_detail: Superteam Earn
3939
date: "2026-04"
40-
github_url: https://github.com/RECTOR-LABS/adrena-trading-arena
41-
repo_name: adrena-trading-arena
42-
description: On-chain trading competition platform for Adrena Protocol. 4-layer monorepo with Anchor program, TypeScript SDK, Rust orchestrator, and Next.js frontend.
40+
github_url: https://github.com/RECTOR-LABS/adrena-agent-arena
41+
repo_name: adrena-agent-arena
42+
description: Autonomous on-chain AI agent competition platform for Adrena Protocol. 4-layer monorepo with Anchor program, TypeScript SDK, Rust orchestrator, and Next.js frontend.
4343

4444
- slug: sip-protocol-graveyard-torque
4545
title: SIP Protocol

data/resume.yml

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,28 @@ personal:
1717

1818
stats:
1919
- label: Vulnerabilities Found
20-
value: "125"
21-
number: 125
20+
value: "13"
21+
number: 13
2222
- label: Repositories
2323
value: "64+"
2424
number: 64
2525

2626
summary:
2727
pdf: >-
28-
Full-stack Solana engineer with 10 wins across hackathons, bounties, and
29-
grants totaling $34.5K+ in the Solana ecosystem. Awarded $10K Solana
30-
Foundation grant and $6K audit subsidy for SIP Protocol. Currently
31-
building multi-chain automated trading infrastructure in Rust (Axum,
32-
Tokio, TimescaleDB) across Solana, Starknet, and ZKSync.
33-
Security-focused: conducted Solana gaming protocol audit documenting
34-
125 vulnerabilities. Built LUMOS, a type-safe schema language bridging
35-
Rust and TypeScript for Solana with full IDE ecosystem.
28+
Full-stack Solana engineer with 11 wins across hackathons, bounties, and
29+
grants totaling $36K+ in the Solana ecosystem, including a $10K Solana
30+
Foundation grant and $6K audit subsidy for SIP Protocol. Placed 1st of
31+
116 in a Solana security audit competition — reviewed 14 open-source
32+
protocols and reported 13 findings, the top one a framework-level Anchor
33+
CPI vulnerability (CVSS 7.5), fixed upstream. Builds production AI agents
34+
and the MCP tooling they run on, in Rust and TypeScript. Also built
35+
LUMOS, a type-safe schema language bridging Rust and TypeScript for Solana.
3636
web: >-
37-
Full-stack Solana engineer. 10 wins, $34.5K+ earned, $16K in grants.
38-
Building production trading infrastructure in Rust across
39-
Solana/Starknet/ZKSync. Security-focused: 125 vulnerabilities
40-
documented in Solana gaming protocol audit.
37+
Full-stack Solana engineer. 11 wins, $36K+ earned, $16K in grants.
38+
Placed 1st of 116 in a Solana security audit — 13 findings across 14
39+
protocols, the top a framework-level Anchor CPI vulnerability (CVSS 7.5)
40+
fixed upstream. Builds production AI agents and MCP tooling in Rust and
41+
TypeScript.
4142
4243
skills:
4344
- category: Languages
@@ -55,15 +56,15 @@ skills:
5556

5657
experience:
5758
- title: Full Stack Developer & Agentic Engineer
58-
company: Intric LLC (arbital.xyz)
59+
company: Confidential DeFi Startup
5960
date_start: "2026-02"
60-
date_end: present
61+
date_end: "2026-06"
6162
location: "Remote — Jakarta, Indonesia"
6263
bullets:
63-
- text: "Building Arbital, a multi-tenant automated trading bot platform for decentralized exchanges, written in Rust (Axum, Tokio async runtime)"
64+
- text: "Built backend services in Rust (Axum, Tokio async runtime) for a multi-tenant DeFi platform"
6465
pdf: true
6566
web: true
66-
- text: "Designed AES-256-GCM encrypted credential storage with random nonces for secure exchange API key management"
67+
- text: "Designed AES-256-GCM encrypted credential storage with random nonces for secure API key management"
6768
pdf: true
6869
web: true
6970
- text: "Built EIP-712 wallet-based authentication with challenge-response flow, JWT sessions, and stratified rate limiting (5 tiers)"
@@ -72,7 +73,7 @@ experience:
7273
- text: "Implemented multi-chain cryptographic signing: Ed25519 (Solana), Stark key (Starknet), EIP-712 (ZKSync)"
7374
pdf: true
7475
web: true
75-
- text: "Designed distributed bot execution with Redis-based locking (120s TTL, 60s heartbeat), state snapshots, and graceful shutdown"
76+
- text: "Designed distributed job execution with Redis-based locking (120s TTL, 60s heartbeat), state snapshots, and graceful shutdown"
7677
pdf: false
7778
web: true
7879
- text: "Built event-driven persistence pipeline: Redis Streams to TimescaleDB via dedicated DB writer service"
@@ -81,7 +82,7 @@ experience:
8182
- text: "Managed secret infrastructure with SOPS + age encryption for staging/production environments"
8283
pdf: false
8384
web: true
84-
- text: "Implemented proxy clustering for exchange rate limit compliance across concurrent bot instances"
85+
- text: "Implemented proxy clustering for upstream rate-limit compliance across concurrent worker instances"
8586
pdf: false
8687
web: true
8788

@@ -143,10 +144,10 @@ projects:
143144
description: Type-safe schema language bridging Rust and TypeScript for Solana. Full IDE ecosystem.
144145
tags: [Rust, TypeScript, LSP, Tree-sitter]
145146
featured: true
146-
- name: Adrena Trading Arena
147+
- name: Adrena AI Agent Arena
147148
org: RECTOR-LABS
148-
github_url: https://github.com/RECTOR-LABS/adrena-trading-arena
149-
description: On-chain trading competition platform for Adrena Protocol with Anchor program, SDK, Rust orchestrator, and Next.js frontend.
149+
github_url: https://github.com/RECTOR-LABS/adrena-agent-arena
150+
description: Autonomous on-chain AI agent competition platform for Adrena Protocol with Anchor program, SDK, Rust orchestrator, and Next.js frontend.
150151
tags: [Solana, Anchor, Rust, TypeScript, Next.js]
151152
featured: true
152153
- name: OpenBudget.ID

scripts/generate-resume-pdf.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ function buildPdfStats(achievements) {
127127
return {
128128
wins: String(winCount),
129129
earnings: `$${totalEarnings.toLocaleString("en-US")}+`,
130-
vulns: "125", // hardcoded in ERB
130+
vulns: "13", // Superteam audit: 13 findings (corrected from stale "125" gaming-audit claim)
131131
grantsAmount: `$${grantsTotal.toLocaleString("en-US")}`,
132132
};
133133
}

src/lib/content/resume.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ describe("loadResume", () => {
6161
expect(typeof bullet.text).toBe("string");
6262
}
6363
}
64-
// First entry is the Intric role
65-
expect(experience[0].company).toBe("Intric LLC (arbital.xyz)");
64+
// First entry is the (NDA-anonymized) most-recent role
65+
expect(experience[0].company).toBe("Confidential DeFi Startup");
6666
});
6767

6868
it("projects is a non-empty array with the expected fields", () => {

src/lib/content/superteam.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,19 @@ describe("buildStats", () => {
6262
const result = buildStats({ totalEarnings, winCount, achievements: all }, stats);
6363

6464
// Mirrors prod (curl https://rectorspace.com/apply/superteam):
65-
// $36,050+ / 11 / 125 / 64+ / 2
65+
// $36,050+ / 11 / 13 / 64+ / 2
6666
expect(result).toEqual([
6767
{ label: "Ecosystem Earnings", value: `$${totalEarnings.toLocaleString("en-US")}+`, number: totalEarnings },
6868
{ label: "Wins", value: String(winCount), number: winCount },
69-
{ label: "Vulnerabilities Found", value: "125", number: 125 },
69+
{ label: "Vulnerabilities Found", value: "13", number: 13 },
7070
{ label: "Repositories", value: "64+", number: 64 },
7171
{ label: "Grants Received", value: String(grants), number: grants },
7272
]);
7373
});
7474

7575
it("places earnings first and grants last, with YAML stats in between in order", () => {
7676
const yamlStats = [
77-
{ label: "Vulnerabilities Found", value: "125", number: 125 },
77+
{ label: "Vulnerabilities Found", value: "13", number: 13 },
7878
{ label: "Repositories", value: "64+", number: 64 },
7979
];
8080
const achievements = [
@@ -92,7 +92,7 @@ describe("buildStats", () => {
9292
expect(result).toEqual([
9393
{ label: "Ecosystem Earnings", value: "$23,000+", number: 23000 },
9494
{ label: "Wins", value: "4", number: 4 },
95-
{ label: "Vulnerabilities Found", value: "125", number: 125 },
95+
{ label: "Vulnerabilities Found", value: "13", number: 13 },
9696
{ label: "Repositories", value: "64+", number: 64 },
9797
{ label: "Grants Received", value: "2", number: 2 },
9898
]);
@@ -172,7 +172,7 @@ describe("sortAwardsByPrize", () => {
172172
it("is a stable sort for equal prize amounts (preserves YAML order)", () => {
173173
// Ruby's sort_by is stable; ties keep their original relative order.
174174
const a = makeAchievement({ prizeAmount: 1500, slug: "a", title: "Solana Security Audit" });
175-
const b = makeAchievement({ prizeAmount: 1500, slug: "b", title: "Adrena Trading Arena" });
175+
const b = makeAchievement({ prizeAmount: 1500, slug: "b", title: "Adrena AI Agent Arena" });
176176
const c = makeAchievement({ prizeAmount: 1500, slug: "c", title: "OpenBudget.ID" });
177177
const sorted = sortAwardsByPrize([a, b, c]);
178178
expect(sorted.map((x) => x.slug)).toEqual(["a", "b", "c"]);
@@ -236,7 +236,7 @@ describe("featuredProjects", () => {
236236
"Web3 Deal Discovery",
237237
"pNode Pulse",
238238
"LUMOS",
239-
"Adrena Trading Arena",
239+
"Adrena AI Agent Arena",
240240
]);
241241
expect(featured.every((p) => p.featured === true)).toBe(true);
242242
});

0 commit comments

Comments
 (0)