Full Stack Developer

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

3500

HOURS PER WEEK

40

DATE UPDATED

Mar 2, 2026

JOB OVERVIEW

Role
Full-stack developer to build a financial data platform. The main feature will be an AI-powered financial chatbot. Users will be able to ask questions like, “What are Amazon’s cloud revenues for each of the last 5 years?” and the answer will show a chart and text. In addition to the chatbot, developer will build dashboards and pages showing how markets are trading through charts, tables, heatmaps, screeners, watchlists, etc. Work spans the full stack: backend (data pipelines, caching, database optimization), AI (LLM flows, RAG, prompt tuning), and frontend (js charting libraries and responsive UI). An early version of the watchlist, which will be one component of the final product, is live at ---------- .

Chatbot Feature - What you’ll work on

Build data pipelines: ingest financial data from APIs ? parse and transform into structured formats ? store in PostgreSQL. Data includes structured data (financials, prices, earnings, analyst ratings) and unstructured documents (SEC filings, earnings call transcripts, investor presentations, etc.).
Build LLM pipelines: documents ? Embeddings (OpenAI) ? vector retrieval via pgvector (RAG) ? prompt construction ? answer generation ? validation (catch wrong numbers, dates, hallucinations).
Prompt engineering: tune prompts to improve accuracy, reduce hallucinations, and handle edge cases.
Charts: build visualizations for chat responses using Highcharts or similar.
Scale coverage: extend to thousands of US stocks.

Why charts matter
A major differentiator is how we present data visually within the chatbot. We’ll post charts on X and other platforms to grow our audience. If you’ve made data look beautiful with JS charting libraries, that’s a big plus.

Collaboration
Developer will work directly with the founder, who handles product direction and domain expertise (finance background, 10+ years investing/trading), while dev handles the technical execution.

Current tech stack
Frontend: React, Next.js (App Router), TypeScript, Tailwind CSS
Backend: Next.js Server Actions, API Routes
Database: Supabase (PostgreSQL + pgvector for embeddings)
AI/LLM: OpenAI API (incl. embeddings), prompt engineering, RAG patterns
Charts: Highcharts, TradingView Lightweight Charts, HTML5 Canvas
Data APIs: Financial Market API (FMP, ---------- , etc.), SEC EDGAR

Required
Experience with React and TypeScript
Experience with Next.js
Experience with PostgreSQL
Understanding of REST APIs and data fetching patterns
Experience with OpenAI API or similar LLM integrations
Familiarity with vector databases and RAG patterns
Knowledge of real-time data patterns (WebSockets, polling)
Clean code practices and attention to detail
Great English and communication skills

Nice to have
Experience with financial data or fintech applications
Experience with JS charting libraries (Highcharts, Chart.js, D3, Recharts, TradingView Lightweight Charts, etc.)

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0021
Controller Execution Time ( Jobseekers / Job )  0.0185
Total Execution Time  0.0215
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,508,472 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-Stack-Developer-1526148
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0108 seconds)  (Hide)
0.0016   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1526148
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 882131
 LIMIT 1 
0.0010   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1526148
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-19',ej.date_added) duration_daysDATEDIFF('2026-04-19',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-04-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1526148' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1526148 
0.0021   UPDATE employer_jobs SET hit_counts '***Dec-02-2025=14***Dec-03-2025=228***Dec-04-2025=54***Dec-05-2025=21***Dec-06-2025=17***Dec-07-2025=15***Dec-08-2025=8***Dec-09-2025=9***Dec-10-2025=4***Dec-11-2025=6***Dec-12-2025=3***Dec-13-2025=8***Dec-14-2025=10***Dec-15-2025=2***Dec-16-2025=5***Dec-17-2025=4***Dec-18-2025=4***Dec-19-2025=2***Dec-20-2025=3***Dec-21-2025=2***Dec-22-2025=2***Dec-23-2025=1***Dec-24-2025=1***Dec-25-2025=3***Dec-26-2025=3***Dec-27-2025=2***Dec-28-2025=1***Dec-29-2025=1***Dec-30-2025=4***Jan-01-2026=1***Jan-02-2026=2***Jan-03-2026=5***Jan-04-2026=1***Jan-05-2026=1***Jan-06-2026=1***Jan-09-2026=2***Jan-11-2026=1***Jan-12-2026=1***Jan-14-2026=2***Jan-15-2026=4***Jan-16-2026=2***Jan-18-2026=4***Jan-19-2026=4***Jan-21-2026=6***Jan-22-2026=1***Jan-23-2026=3***Jan-24-2026=1***Jan-25-2026=1***Jan-26-2026=1***Jan-27-2026=3***Jan-29-2026=4***Jan-30-2026=2***Jan-31-2026=149***Feb-01-2026=79***Feb-02-2026=106***Feb-03-2026=51***Feb-04-2026=19***Feb-05-2026=14***Feb-06-2026=29***Feb-07-2026=6***Feb-08-2026=5***Feb-09-2026=8***Feb-10-2026=6***Feb-11-2026=7***Feb-12-2026=8***Feb-13-2026=10***Feb-14-2026=5***Feb-16-2026=3***Feb-17-2026=3***Feb-18-2026=2***Feb-19-2026=2***Feb-20-2026=2***Feb-21-2026=2***Feb-22-2026=1***Feb-23-2026=1***Feb-24-2026=2***Feb-25-2026=1***Mar-01-2026=5***Mar-02-2026=245***Mar-03-2026=118***Mar-04-2026=71***Mar-05-2026=23***Mar-06-2026=24***Mar-07-2026=18***Mar-08-2026=13***Mar-09-2026=17***Mar-10-2026=8***Mar-11-2026=5***Mar-12-2026=14***Mar-13-2026=12***Mar-14-2026=7***Mar-15-2026=14***Mar-16-2026=8***Mar-17-2026=4***Mar-18-2026=3***Mar-19-2026=6***Mar-20-2026=1***Mar-21-2026=2***Mar-23-2026=1***Mar-24-2026=3***Mar-25-2026=3***Mar-26-2026=2***Mar-27-2026=4***Mar-28-2026=1***Mar-29-2026=7***Mar-30-2026=1***Mar-31-2026=5***Apr-01-2026=1***Apr-02-2026=2***Apr-03-2026=11***Apr-04-2026=10***Apr-05-2026=10***Apr-06-2026=9***Apr-07-2026=5***Apr-08-2026=13***Apr-09-2026=5***Apr-10-2026=4***Apr-11-2026=4***Apr-12-2026=4***Apr-13-2026=5***Apr-14-2026=4***Apr-15-2026=4***Apr-16-2026=5***Apr-17-2026=4***Apr-18-2026=4***Apr-19-2026=1' WHERE job_id'1526148'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Dec-2025=437***Jan-2026=202***Feb-2026=372***Mar-2026=645***Apr-2026=105' WHERE job_id'1526148'  
0.0024   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1526148' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1526148 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '882131'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)