Verifiable OJT records,
cryptographically
anchored to Ethereum.
InternProof replaces paper OJT logbooks with smart-contract-enforced records. Every clock-in, task description, and supervisor signature is permanently on-chain — independently verifiable by anyone, falsifiable by no one.
Requires MetaMask · Sepolia testnet · No real ETH required
Contract Specifications
Network
Sepolia
Chain ID 11155111
Pattern
UUPS
EIP-1822 proxy
Bytecode
23,531
of 24,576 limit
Functions
46
public ABI methods
Proxy Address
0x9A8BD5059F3ec602c9b54D2C78d1f11eE0580bf4100%
Tamper-proof
0
Trust needed
∞
Audit window
The Problem
Paper logbooks are easily falsified.
Traditional OJT documentation depends on physical logbooks signed manually by supervisors. These are vulnerable to forgery, can be backdated, lost, or altered — with no cryptographic guarantee of authenticity.
For Philippine HEIs alone, hundreds of thousands of OJT logbooks are processed every academic year with zero verifiability for future employers.
The Solution
Cryptographic proof, not paper trust.
Every action — clock-in, clock-out, supervisor verification, coordinator confirmation — is a transaction signed by the actor's private key and recorded immutably on Ethereum.
Verification becomes a public read: anyone can confirm a graduate's OJT history in seconds, with no human gatekeeper.
100%
Tamper-resistant
Records cannot be altered post-submission
0
Trust required
Verification needs no central authority
∞
Audit window
Records persist for the lifetime of the chain
<$1
Per record
Sepolia gas cost per log entry
System Architecture
Four roles, enforced on-chain
Role-based access control at the smart contract level using custom modifiers. No role can act outside its permissions.
Admin
System operator. Registers schools, courses, companies, and approves supervisors. One admin per deployment.
Supervisor
Company representative. Gets a unique SUP- code, verifies daily entries, and issues final sign-off when hours are complete.
Student
Intern. Clocks in/out daily on-chain with task descriptions and proof images uploaded to IPFS.
Coordinator
School representative. Final authority that confirms OJT completion after supervisor sign-off.
Verification Flow
From registration to certified completion
01
Student registers on-chain
Student connects MetaMask, enters their supervisor code, and calls registerStudent(). Their wallet is permanently linked to a school, course, and supervisor.
02
Daily clock-in records the timestamp
On arrival, the student calls clockIn(). The block timestamp is captured as time-in. The contract enforces one active session per student at a time.
03
Clock-out with task description and proof
On clockOut(), the contract calculates hours (enforces 4h minimum), stores the task description, and the IPFS CID of the proof image permanently on-chain.
04
Supervisor verifies on-chain
The supervisor calls verifyLogEntry(entryId). The contract verifies wallet authorization, then atomically updates the student's totalVerifiedHours.
05
Sign-off and coordinator confirmation
The supervisor calls issueFinalSignOff(), then the coordinator calls coordinatorConfirm(). Status advances to OJT Complete — the student can download their certificate.
Technical Stack
Production-grade architecture
Smart Contract Layer
Application Layer
Ready to begin?
Connect your MetaMask wallet to register, or verify a graduate's record without an account.