Inspiration
Our big problem statement was predatory lending practices, how can we help people who struggle financially work towards better financial practices. From there we found the shadow economy and gig workers. The CRA has admitted they struggle to properly track income from these people. Despite earning consistent income, they are often denied access to credit because their earnings don’t fit into conventional underwriting models.
We saw an opportunity to bridge this gap by redefining how financial reliability is measured by moving beyond static credit scores and toward a dynamic, data-driven understanding of income behavior. Which we called the GSS.
What it does
Basis is a financial identity platform that transforms raw transaction data into a Gig Stability Score (GSS) a standardized measure of income reliability.
The platform:
- Ingests raw user transaction data
- Classifies and analyzes income streams
- Builds time-series models of income behavior
- Computes a stability-based risk score
- Enhances scoring with assets, credit, and application history
- Allows lenders to view and export borrower profiles
This enables gig workers to prove financial stability, and lenders to make faster, more accurate underwriting decisions.
How we built it
The system was built as a full-stack application combining:
- Frontend: HTML, CSS, and JavaScript for a dynamic dashboard and user experience
- Backend: Node.js with Express for API handling and data persistence
- Data Processing Pipeline (Python):
ingestion.py→ cleans and validates transaction dataclassification.py→ categorizes income sourcestimeseries.py→ builds monthly income trendsfeatures.py→ extracts key metrics (volatility, growth, diversification)risk.py→ computes the Gig Stability Scoreoutput.py→ formats structured analytics output
Data is stored in JSON files and dynamically updated through user interactions (transactions, assets, credit, applications).
Challenges I ran into
- Data consistency: Handling duplicate transaction uploads and ensuring only the most recent data is used per user
- User identity linking: Ensuring consistent user IDs across frontend, backend, and analytics pipeline
- Asynchronous processing: Coordinating Node.js API calls with Python-based analytics execution
- UI integration: Making modular components (charts, insights, breakdowns) dynamically update with backend data
- Scoring design: Balancing multiple financial signals into a single interpretable and fair score
Accomplishments that I'm proud of
- Built an end-to-end data pipeline from raw CSV → structured analytics → frontend visualization
- Designed a novel scoring system (GSS) tailored to non-traditional income
- Integrated multi-factor scoring, incorporating assets, liabilities, and behavioral signals
- Enabled lender-side data sharing and export, simulating real underwriting workflows
- Delivered a clean, interactive dashboard with real-time updates and visual insights
What I learned
- How to design and implement a full-stack data product under time constraints
- The importance of data normalization and consistency in real-world systems
- How to combine financial logic with technical implementation
- Building systems that are not just functional, but interpretable and explainable
- How small UX decisions (modals, flows, feedback) significantly impact usability
- The quantity of features required to build a platform of this scale file organization and labelling
What's next for Basis
- Transition from JSON storage to a scalable database architecture
- Integrate real-time bank APIs instead of CSV uploads
- Enhance the scoring model with machine learning and predictive analytics
- Build a lender decision engine with automated approval recommendations
- Add user-facing insights and financial coaching tools
- Expand into a full financial identity layer for the modern workforce