FULL-STACK APPLICATION · MACHINE LEARNING · AI
02Olmem Market Intelligence
A decision-support platform that organizes market conditions, company signals, IPO activity, portfolio context, and optional AI explanations.

Business Problem
Investment research is fragmented across price feeds, index performance, sector conditions, company fundamentals, news, IPO calendars, and portfolio positions. Raw information is abundant, but understanding what deserves attention—and why—requires repeated comparison across disconnected sources.
Why I Built It
I wanted a research experience that reduces information overload without pretending uncertainty can be removed. The product is designed to help a user understand market context, compare opportunities, and investigate evidence before making a decision. It intentionally separates research guidance from trade execution.
Solution
The application collects market and business data, normalizes it into a PostgreSQL-backed domain model, applies rule-based scoring and Python model workflows, and presents the results in a Next.js dashboard. Optional AI providers can translate structured evidence into plain-language explanations. Authentication, portfolio input, alerts, preferences, subscription state, and IPO monitoring create a complete research workflow.
Architecture
A simplified view of how information moves through the solution.
Why These Technologies?
Technology choices were made around operating constraints, maintainability, integration boundaries, and the people using the system.
Next.js
The App Router supports a fast dashboard experience, server-rendered public surfaces, protected application routes, and API endpoints in one deployable codebase.
TypeScript
Typed contracts reduce errors across market payloads, scoring results, database records, and UI components where field mismatches are costly.
PostgreSQL / Prisma
Relational storage fits users, holdings, alerts, subscription state, research preferences, and repeatable market snapshots; Prisma keeps application queries explicit and type-safe.
Python
Python provides the strongest ecosystem for feature engineering, model experimentation, validation, and future model-serving workflows.
AI provider APIs
A provider-agnostic layer lets users request explanations without making the core scoring engine dependent on a single model vendor.
Vercel
It provides low-friction Next.js deployment, managed build previews, and environment configuration while the product is iterating quickly.
Technical Highlights
Languages
TypeScript · Python
Frameworks
Next.js · React · Prisma
Databases
PostgreSQL
Cloud
Vercel
Machine Learning
Feature pipelines · Scoring models
AI
Provider-agnostic explanations
APIs
Market data · News · AI providers
Deployment
Vercel CI/CD
Challenges Solved
The hardest challenge was turning conflicting signals into understandable guidance. Momentum, pullback quality, valuation, market breadth, company quality, and news can point in different directions.
I kept the deterministic scoring layer separate from AI narration. Structured scores and reason codes remain inspectable; AI is optional and explains the evidence rather than silently replacing it.
Decision-support systems are more trustworthy when users can see why a result exists. Explainability and clear boundaries matter more than adding another opaque score.
Engineering Spotlight
Concise implementation patterns that show the engineering beneath the interface.
typescriptExplainable opportunity scoring+
Representative implementation pattern · private source protected
The scoring pattern returns both a numeric result and reason codes. That makes the dashboard explainable and gives the optional AI layer structured evidence to discuss.
type Signal = {
score: number;
reasons: string[];
};
export function scoreOpportunity(stock: Snapshot): Signal {
let score = 50;
const reasons: string[] = [];
if (stock.trend > 80) {
score += 15;
reasons.push("long-term uptrend");
}
if (stock.pullbackQuality > 75) {
score += 15;
reasons.push("high-quality pullback");
}
if (stock.risk > 70) {
score -= 20;
reasons.push("elevated risk");
}
return { score: Math.max(0, Math.min(100, score)), reasons };
}Business Impact
- Centralizes market, company, sector, portfolio, news, and IPO research.
- Improves visibility into why a stock is ranked as an opportunity, watch item, or risk.
- Reduces repeated comparison across disconnected research screens.
- Supports configurable research preferences and portfolio-aware insights.
- Keeps AI optional while maintaining a functional rule-based decision layer.
Source remains private to protect business logic, credentials, customer information, and proprietary workflows.