Data Scientist

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

TYPE OF WORK

Full Time

SALARY

$800/month

HOURS PER WEEK

40

DATE UPDATED

Aug 21, 2026

JOB OVERVIEW

// The work

We make financial research videos. You build the data layer underneath them: pulling the numbers, cleaning them, and turning them into charts and information design that titles, thumbnails, and scripts get built on.

Most of this job is code. You'll be scraping SEC filings, hitting APIs, wrangling messy financial data into something structured, and producing charts from it. If you can't write the prompt that gets the data, this role won't work.

You don't need to be a finance expert. You need to be fluent with data and fast at learning. We teach you the rest.

/// What you'll do

Pull data from filings, APIs, and the web — write the scraper, handle the pagination, deal with the garbage formatting.
Clean and structure it. Reconcile inconsistencies across sources and periods.
Build charts and information design from it. Not screenshots of spreadsheets — designed visuals.
Dig into a trend and figure out what's actually in the data. Come back with a finding, not a dump.
Help shape the angle: what's the story, and why should anyone care.
Chase answers on your own. Come back with progress, not just questions.

/// What we need

Python and pandas. Comfortable, not "I did a course." You've built things.
Real scraping experience — requests/BeautifulSoup/Playwright, whatever you use. You've dealt with sites that don't want to be scraped.
You can produce a chart in code (matplotlib, plotly, D3, Observable — your choice) and you have taste about how it looks.
SQL is a plus. JavaScript is a plus. Working with financial data is a plus.
High agency. You move without being told. You go one layer deeper than asked.
Clear written English. We work async.

We can teach the domain. We can't teach agency, and we're not teaching you to code.

/// Not for you if

Your data work stops at Excel.
You need a BI tool to make a chart.
You need every task fully specified.
You go quiet when you get stuck.

/// To apply

Start with the word CADMIUM so we know you read this far.

Then do this, it should take you under an hour:

Pick any US-listed company. Pull its last 8 quarters of revenue from its SEC filings — by code, not by hand. Make one chart from it. Send us the code and the chart.

We don't care if the chart is beautiful. We care that the data came out of a script you wrote, and that the chart makes one point clearly.

Also tell us: one thing you taught yourself recently, and how.

We read applications that follow these steps. We skip the ones that don't.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0326
Total Execution Time  0.0339
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,511,488 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Data-Scientist-1714080
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0270 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1714080
 LIMIT 1 
0.0008   SELECT *
FROM `employers`
WHERE `employer_id` = 479599
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1714080
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-23',ej.date_added) duration_daysDATEDIFF('2026-08-23',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-08-23',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1714080' 
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1714080 
0.0007   UPDATE employer_jobs SET hit_counts '***Aug-21-2026=639***Aug-22-2026=48***Aug-23-2026=2' WHERE job_id'1714080'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Aug-2026=687' WHERE job_id'1714080'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1714080' 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` = 1714080 
0.0205   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '479599'
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)