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.
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.
- companyone name in, the wallet's website; the scripts find the rest
- site and codePlaywrightevery page and the code each page loads, saved with its link
- social accountsXthe X account and how far its posts reach
- communityApifythe Telegram and Discord channels
- team and fundingLinkedInthe team's public profiles and the funding records
- partnershipsPythoneach partner the site names, looked up on the partner's own site and posts
- ad librariesPythonthe ads the wallet runs, and in which markets
- on-chainDunethe wallet's contract, its active wallets read from the chain
- cross-checkClaude Opusthe sources compared, claim by claim
- cross-checkClaude Opusthe chain does not show the user count
- cross-checkClaude Opusthe exchange never announced the partnership
- reviewtwo mismatches wait for a person
- filethe company file, its mismatches listed and its questions ranked
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.
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
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.
| Framework | Project A | Project B | Project C |
|---|---|---|---|
| p. 14cited | p. 9cited | unsupported | |
| p. 21cited | p. 17cited | p. 11cited | |
| p. 6cited | unsupported | p. 8cited | |
| unsupported | p. 30cited | unsupported |
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.
- Has shipped work on our stack
- Two references we can call
- Price inside our budget
- Can start this quarter
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





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.
Point at any part of the drawing to read what happens at that step.
Who does each step
Stack
Outputs