Research and data

I research the companies, products and markets behind your next deal, launch or hire, and the candidates or vendors who apply, from what each has made public and from your own documents. Every point you get comes with the page, request, post or passage behind it, so you decide on what holds and know what to ask next.

Company research

Before a meeting or a deal, you get a file on the company built from what it has made public, with each claim that another source contradicts marked, so you know which claims hold.

From one company name or website, scripts collect what the company has made public, all at the same time: a browser reads the site's pages and the code they load, a scraper pulls the social accounts and community channels, and other scripts read the team, the funding records, the partnership claims and the ad libraries, plus on-chain activity for a crypto company. Each script saves what it found with the link it came from before any analysis starts.

A model compares the sources and flags what does not add up, such as a partnership the partner never announced or a user count the blockchain does not show. I review the flags and pick the questions worth asking, so you walk into the meeting knowing which claims hold and which to push on.

Sample data

Press the button and watch the run on one company. It stops at the review and waits for you to decide which flags become questions.

The company is a composite made up for this page: it names no real company and links no real page. The sources, the tools and the steps are the ones the system runs.

A crypto wallet app

Its site lists an exchange as a partner and states a user count.

  1. companyone name in, the wallet's website; the scripts find the rest
  2. site and codePlaywrightevery page and the code each page loads, saved with its link
  3. social accountsXthe X account and how far its posts reach
  4. communityApifythe Telegram and Discord channels
  5. team and fundingLinkedInthe team's public profiles and the funding records
  6. partnershipsPythoneach partner the site names, looked up on the partner's own site and posts
  7. ad librariesPythonthe ads the wallet runs, and in which markets
  8. on-chainDunethe wallet's contract, its active wallets read from the chain
  9. cross-checkClaude Opusthe sources compared, claim by claim
  10. cross-checkClaude Opusthe chain does not show the user count
  11. cross-checkClaude Opusthe exchange never announced the partnership
  12. reviewtwo mismatches wait for a person
  13. filethe company file, its mismatches listed and its questions ranked
Site and codeSocial accountsCommunityTeam and fundingPartnershipsAd librariesOn-chainCompanyCross-checkReviewFile

Company file

  • holdsa second source agrees
  • one sourcenothing to check it against yet
  • contradictedanother source disagrees
  • Productthe swap and staking screens its site shows are in the code it ships
  • Teamthe team page matches the founders' public profiles
  • Fundingthe round on its site appears in the funding records
  • Reach on Xhow far its posts travel, read from X alone
  • Communitythe channels' members and how often they post
  • Adsthe ads it runs and where, with nothing to check the spend against
  • Usersthe user count on its site, against the wallets active on-chain
  • Partnershipsthe exchange it lists has never named it

Point at any part of the drawing to read what happens at that step.

Who does each step

  • Claude Opuscompares the sources and writes the file
  • Collectioncode, no model, so the raw data is what each source published

Stack

  • Pythonthe collection scripts
  • Playwrightreads the whole site
  • Apifysocial and community data
  • Duneon-chain data
  • LinkedInthe team's public profiles
  • Xhow far the company's posts reach

Outputs

  • Company fileeverything found, each claim linked to the page, post, filing or transaction behind it
  • Conflict listthe claims that disagree, quoted side by side with both sources
  • Follow-upsthe questions to ask, ranked by how much each answer would change your decision

Competitive teardown

A map of what a competitor's product does, taken from the product itself (its pages, the code it ships and the requests it makes while it runs), with proof behind each finding.

A browser opens the live product as a real user would and records its traffic: which servers it calls and what data it sends. Python reads the code the product ships for the public keys, server addresses and outside services named in it, and the security settings its servers send back; a mobile app is taken apart to list what is inside. Everything is read from the outside, in the same session an ordinary user has, and any key found is listed, never used.

A model sorts the evidence into the features that exist, the features that appear only on the marketing site, and the services the product depends on. You plan your roadmap and positioning against what the competitor has shipped, with a recorded request or a line of their code behind each point.

Point at any part of the drawing to read what happens at that step.

Who does each step

  • Claude Opussorts the findings
  • Capturecode, no model; it records the requests as they happen

Stack

  • Playwrighta real session, its traffic recorded
  • Pythonreads the code and the headers
  • A decompilertakes the mobile app apart

Outputs

  • Teardown fileeach feature with the request or code that proves it
  • Feature mapwhat shipped, beside what exists only in marketing
  • Service listthe outside services and vendors the product uses

Market and company discovery

A map of your market: the companies competing for your buyers, found from the places buyers see them and compared side by side on the same evidence, so you see where each one is ahead of you and which channels you are missing.

From your company and your category, scripts find the companies in your market: the ones in the search results and ad libraries your buyers see, in investor portfolios, directories and company registries, and on GitHub. The same company often shows up several ways, so an AI model decides which records are one company, code merges them and keeps every source attached, and a pair of records it is unsure of waits for a person.

Each company then gets the same set of readings: its site and the code behind it, its X account, its community, its team, its funding, its partnerships, its ads and growth channels, its GitHub and, for a crypto company, its on-chain activity. You see them side by side with your gaps marked, such as a channel where a competitor publishes and you have no presence, or a pricing or docs page your rivals publish and you do not. Any company on the map can then get a full company file.

Sample data
SEARCH AND ADSPORTFOLIOSDIRECTORIESREGISTRIESGITHUBMATCHYOUA RIVALA RIVALA RIVALA RIVALA RIVALSITE AND CODEXCOMMUNITYTEAMFUNDINGPARTNERSHIPSADS AND CHANNELSGITHUBON-CHAINA GAP: MOST RIVALS HAVE IT, YOU DO NOTNEXT FOR A FULLCOMPANY FILEUNSURE: ONE COMPANY OR TWO?

Point at any part of the drawing to read what happens at that step.

Who does each step

  • Claude Sonnetdecides which records are the same company
  • Claude Opuscompares the companies and marks your gaps
  • Finding and mergingcode, no model

Stack

  • Pythonfinds and merges the companies
  • Postgresthe company records
  • Playwrightreads each company's site
  • Apifysocial accounts, communities and directories
  • GitHubcode activity
  • Xeach company's posts
  • LinkedIneach company's team
  • Duneon-chain activity, for a crypto company

Outputs

  • Market mapeach company side by side on the same readings, each with its source
  • Gapsthe channels and pages your rivals have and you do not, each with its link
  • Research queuecompanies ready for a full company file

Social intelligence

You see which posts work in your market: each post is scored against its own account's recent average, so a small account's breakout post ranks above a big account's ordinary one, and a brief says what the winning videos have in common.

A scraper pulls the recent posts and videos of each account you list (yours, your competitors' and the leaders in your category) with their views and engagement. Python scores each post against that account's own average.

For the posts that beat their account's average by the most, a model looks at frames from across the video and labels the opening shot, the text on screen, the format and the subject. You get a brief on what to make next, with the posts behind each point.

Sample data

Point at any part of the drawing to read what happens at that step.

Who does each step

  • Claude Sonnetlabels the video frames
  • Claude Opuswrites the brief
  • Scoringcode, no model

Stack

  • Apifypulls the posts and their numbers
  • Pythonscores each post
  • ffmpegtakes frames from each video
  • Xposts and their engagement
  • TikTokvideos and their views
  • YouTubevideos and their views
  • Instagramposts and their engagement

Outputs

  • Scorecardeach account and post against its own average
  • Video breakdownsthe opening shot, on-screen text, format and subject of the top posts
  • Briefwhat to make next, with the posts behind it

Research from your documents

Ask questions of your own documents and data, and each point in the answer comes with the passage it came from, so you can check it at the source.

Python splits your documents (reports, whitepapers, contracts, support logs) into passages, and an embedding model turns each passage into a searchable form, a vector, stored in Postgres with pgvector or in ChromaDB with the document and the place it came from.

A set of questions, written as prompt templates, says what each document must answer. For each question the system finds the closest passages, and a model answers from them alone and cites each one; where they do not answer the question, it says so, and the question is marked unsupported. On a set of whitepapers, the same questions put each project through one standard, so the comparison is fair.

Sample data
DocumentsVectorsProject AProject BProject CProject AProject BProject C
FrameworkProject AProject BProject C
p. 14citedp. 9citedunsupported
p. 21citedp. 17citedp. 11cited
p. 6citedunsupportedp. 8cited
unsupportedp. 30citedunsupported

Point at any part of the drawing to read what happens at that step.

Who does each step

  • Voyage AImakes each passage searchable
  • Claude Sonnetanswers from the passages

Stack

  • Pythonsplits the documents
  • Postgres with pgvectorstores the passages
  • ChromaDBstores them, in place of pgvector
  • Prompt templatesthe questions each document must answer

Outputs

  • Answers with citationseach point with its passage
  • Comparison tableeach document's answers, side by side
  • Unsupported listthe questions your documents do not answer

Hiring and vendor screen

Each candidate or vendor is read against the criteria you set, and you get a shortlist with the evidence behind each decision, while the final call stays yours.

You write your criteria, one per line. As applications and proposals arrive (PDFs, profiles, email threads), code removes each person's name, email and phone, then a model, or a backup if it fails, reads each one against each criterion and records a pass or a hold with the passage that decided it. Code checks that each quoted passage is in the document before the decision counts.

You read a shortlist of those that pass every criterion, with the reasons attached. Each application that was held keeps the criterion that stopped it, so you can reopen it if your criteria change. Who to hire or buy from is still your decision, and your team no longer spends hours on the first read.

The models run only on zero-data-retention endpoints, so no model provider keeps what it reads, and the record of each decision sits in your own Postgres, deleted after the period you set.

Sample data
Criteria
  1. Has shipped work on our stack
  2. Two references we can call
  3. Price inside our budget
  4. Can start this quarter
Intake
Shortlist
Held
PDFname, email and phone removedquote found in the document
Email threadquote found in the document
Price inside our budget
Profilequote found in the document
PDFquote found in the document
Two references we can call
Profilequote found in the document
Has shipped work on our stack

Point at any part of the drawing to read what happens at that step.

Who does each step

  • Kimi K2reads each application against your criteria
  • GLMtakes over if Kimi K2 fails
  • Removing names and checking quotescode, no model

Stack

  • OpenRouteraccess to the models, on zero-data-retention endpoints only
  • Pythonremoves names and contact details, runs the criteria, checks each quote
  • Postgresthe record of each decision, deleted after the period you set
  • Gmailintake, or the inbox your applications arrive in

Outputs

  • Shortlistevery criterion passed, each with its evidence
  • Evidence noteswhy each passed or was held
  • Screen logevery decision with the criterion behind it

Send me what you're growing.

There is no call to book. Send me an email and I reply in writing.

jose@jcomarketing.io