Not connected yet. Open Settings and enter the API address and API key.
1Input Data
Using: default live sheet
Choose a CSV file or drop it here
First row = column names · up to 5,000 rows · 5 MB · comma, semicolon or tab separated
Match your columns to the tool’s fields
Columns are matched by name automatically. Check them and change any that look wrong. * is required.
No file yet? Download a template CSV. Results are shown on screen and downloaded as CSV; nothing is written to a Google Sheet.
2Filter Profiles
Or pick exact rows
Row numbers as shown in the sheet or file (row 1 is the header). Overrides the date, source and already-done filters.
3Processing Mode
Mode
Full run: match, then validate
Off = dry run: decisions are shown, nothing is written.
Advanced
Rows per call: 3 (change in Settings). Each call takes about 7 seconds per row.
4Preview & Run
This run will process
A run is in progress. Only one run can be active at a time.

Live run

Console output
agent console
No runs yet. Start one from the Run tab and the decisions will appear here.

1The big picture

The MDM Stewardship Agent finds the correct OneKey ID for every healthcare professional (HCP) on your list and explains each answer. Two software agents share the work, and a person always has the last word on anything doubtful.

  • The Matching Agent gathers evidence. It searches OneKey for people with the same name and keeps every plausible profile with all of its addresses. It never chooses.
  • The Validation Agent decides. It re-checks every candidate against a fixed set of rules (name, state, profession, address). It returns one OneKey ID with a confidence level, or sends the row to Needs Review.
  • You stay in control. A run is a dry run unless you switch on Write to sheet and confirm. The tool never answers “not found” by itself, and every decision comes with a plain-English comment.

You drive it with four cards on the Run tab, then read the answers on the Results tab.

  1. Input DataGoogle Sheet or CSV file
  2. Filter Profileswhich rows to work on
  3. Processing Modewhere it runs, dry run or write
  4. Preview & Runcheck the rows, then start

2From your list to a OneKey ID

This is the whole journey of a run, from the four cards you fill in to the answers you review. The dashed boxes are the working areas of the agents; the next two sections open them up.

YOU SET UP THE RUNTHE AGENTS WORK, BATCH BY BATCHYOU REVIEWInput DataGoogle Sheetor an uploaded CSV1Filter ProfilesSource and date,skip done, limit2Processing ModeThis computer orAWS Lambda; dry run3Preview & RunCheck the rows,then start4Take the next batch10 rows at a timeMatching AgentSearches OneKey and collects every plausibleprofile for the row. It never decides.Matches files (the hand-off)matches/row_N.json and matches_all.txtValidation AgentRe-checks every candidate against fixed rulesand returns one OneKey ID or Needs Review.Decision for each rowMatched (High, Medium or Low) or Needs Review;failures are marked Not processed and retriedWrite the resultsGoogle Sheet: columns AA to AE, only if Writeto sheet is on. CSV: on screen and a download.OneKeyAPIsearchmore rows: next batchResults tabFilters and search, the full detail of everyrow, downloads and decisions.jsonno rows left

Step by step

  1. Input Data. Choose where the profiles come from: a Google Sheet (the live sheet, or any sheet you paste a link to; the #gid= part of the link picks the tab) or a CSV file you upload (up to 5,000 rows and 5 MB; the columns are matched by name and you can correct the matching). An uploaded CSV is never written back to a sheet.
  2. Filter Profiles. Decide which rows to work on: Source Name, Create Date (a specific day or a custom range), whether rows that already have an answer are skipped, a row limit, or an exact list of rows. See the table below.
  3. Processing Mode. Choose where the agents run (your own computer or AWS Lambda) and whether results are written to the sheet. Write to sheet is off by default, which makes the run a dry run: every decision is shown, nothing is changed.
  4. Preview & Run. Preview matching rows lists exactly the rows your filters select, with a time estimate. A Columns choice above the table lets you pick which columns to check (name, TypeCode, SubType, address, city, state, ZIP, Create Date, Source Name). Then start the run. Writing to the sheet needs one more confirmation tick every time.
  5. Batches. Rows are processed 10 at a time (on AWS Lambda in smaller chunks that are sent one after another). Each row goes through the Matching Agent and then the Validation Agent. OneKey is searched live for every row.
  6. The hand-off. For each row the Matching Agent saves a matches file with every candidate profile it found and the evidence for each. The Validation Agent reads that file; it is also the audit trail for the decision.
  7. Decision. Every row ends as Matched (High, Medium or Low), Needs Review, or Not processed (a technical failure that is retried on the next run).
  8. Write the results. For a Google Sheet with Write to sheet on, the answer is written to columns AA to AE of the row. For a dry run or a CSV, the answers are shown on screen and can be downloaded. Then the next batch starts.
  9. Review. When no rows are left, the Results tab lists every row with filters and a search box, and shows the full detail of each one (comment, candidates and reasoning).

Filter Profiles in detail

FilterWhat it does
Source NameOnly rows whose Source Name equals one of the chosen sources are processed. Pick one or more from the list (VeevaCRM, SFDC, LMHC, Synergistix, and any others on offer). If your source is not listed, choose Others and type the Source Name exactly as it is written in the sheet. Any source switches this filter off.
Create DateSpecific Date: only rows created that day. Custom Range: rows created from the Start Date to the End Date; both of those days are included. A date is always needed unless you give exact rows.
Already-done rowsRows that already have a OneKey ID or a final confidence in the result columns are skipped. Rows marked not processed are tried again. Reprocess includes the finished rows too and overwrites their results.
LimitStop after this many rows. 0 means all matching rows. A small limit is the best way to try the tool.
Exact rowsA list such as 284, 290-295, using the row numbers shown in the sheet or file (row 1 is the header). For a sheet this overrides every filter above.
Uploaded CSVThe file replaces the sheet. Source Name, Create Date and the already-done rule do not apply; only Limit and Exact rows do.

3Inside the Matching Agent

The Matching Agent turns one row into a file of evidence. It asks OneKey, keeps what could plausibly be the same person, and hands everything over. It does not choose a winner, so a doubtful row can never be settled by a lucky search.

MATCHING AGENTSource rowname, state, TypeCode, SubType, addressScreen the rowName missing or a placeholder, such as Staff?TypeCode not a healthcare professional?Search OneKey: exact nameIndividual and activity records, merged by IDWiden the search?Skipped when a live, profession-confirmed exactmatch already hits address rule 1 to 3Search OneKey: similar namesName variants (a wider contains search)Assemble the matches fileKeep profiles with an address in the input state;other-state exact names are only summarisedMatches filematches/row_N.json: every candidatewith its evidenceValidation Agentreads the matches fileNeeds ReviewNo OneKey search is made;the comment says whyyesNot processedOneKey unreachable: therow is retried next runAPI errornoyesno
  1. Screen the row. A row with no first or last name, a placeholder name (for example Staff, Unknown, Test or N/A), or a TypeCode that is not a healthcare professional (for example Contact) goes straight to Needs Review. No OneKey search is made, so no time is spent.
  2. Search OneKey for the exact name. Both the Individual and the Activity (workplace) records are searched and merged by OneKey ID, so every address of a person is kept, including workplace addresses.
  3. Widen the search? By default the wider search is skipped when a live profile with exactly this name, whose profession the TypeCode confirms, already matches the address at rule 1, 2 or 3. In every other case the wider “contains” search runs and collects similar names (spelling variants, longer or hyphenated names) so that they can be compared later.
  4. Assemble the matches file. A profile is kept when it has at least one address in the row's state and either carries the exact name or is a similar name from the wider search (at most 25 similar names are kept). Exact-name profiles that exist only in other states are not listed in full; they are summarised so the steward knows they exist.
  5. Hand over. The file holds, for each candidate, the OneKey ID, name, professional type, Active/Valid status, every individual and workplace address, and a snapshot of how well it matched.
If OneKey cannot be reached the row is marked Not processed instead of being guessed, and it is picked up again on the next run. If the wider search alone fails, the exact-name results are still used.

4Inside the Validation Agent

The Validation Agent reads the matches file and recomputes every comparison from the raw names and addresses (the snapshot in the file is for people and is never trusted). It applies the rules below in this order. The same input always gives the same answer, and each answer comes with a reason.

VALIDATION AGENTFrom the Matching Agentevery candidate and its evidence1 GateExact name, an address in the input state,and a profession that fits the TypeCode2 Active and Valid?Only live profiles can be returned3 Waterfall: best address ruleRules 1 to 9, individual and workplace addressesOne profile at the best rule?one: accept it | several: break the tie4 Break the tieFirst the SubType, then the middle name5 Set the confidenceRules 1-3 High, 4-6 Medium, 7-9 Low; a tie-breakor a vague profession caps it at Medium6 Cross-check similar namesMedium or Low only: a live, in-profession variantat the same or a better rule?7 Optional re-checksRe-verify the chosen ID with OneKey; LLM secondopinion (off by default, can only downgrade)Final decisionMatched (High, Medium or Low): ID, score,confidence and a two-line commentNeeds ReviewNone passes: the commentsays what was foundnone passesNeeds ReviewNone live: inactive IDsare listed for reviewnone liveNeeds ReviewStill tied, or TypeCodeis too vague: all listedstill tiedNeeds ReviewMaybe the wrong person:alternatives are listedas goodNeeds ReviewRe-check failed ordowngraded: ID is listedfailsyesyesseveralone leftnopassesone

1. Gate: who can be a match at all

A candidate must have exactly the same name (spaces, hyphens and punctuation are ignored), an address in the row's state, and a profession that fits the row's TypeCode. Each TypeCode (Physician, Nurse, Pharmacist and so on) maps to the set of OneKey professions that are acceptable for it. Assistants are never merged with practitioners: a Physician Assistant is not a Physician and a Pharmacy Technician is not a Pharmacist. If nobody passes, the row goes to Needs Review and the comment says what was found instead (a wrong profession, other states, or only similar names).

When the TypeCode says nothing useful (for example Other or Unverified), nobody is filtered out on profession, but the result can be at most Medium, and if more than one candidate remains the row goes to Needs Review. When both TypeCode and SubType are blank there is no profession check.

2. Only Active and Valid profiles

Only a profile that is Active and Valid in OneKey can be returned as the answer. Inactive matches are never chosen; they are listed in the next column so the steward can see them.

3. Waterfall: how well does the address match?

Every individual and workplace address on a candidate is compared with the row's address. The strongest rule that an address satisfies decides the candidate's rank, and the best rank among the live candidates wins. “Close” means a small spelling or abbreviation difference in the street.

RuleAddress evidenceScoreConfidence
1Street, address line 2, city and ZIP all match exactly100High
2Street, city and ZIP match exactly95High
3Street is close, address line 2, city and ZIP match exactly90High
4Street is close, city and ZIP match exactly85Medium
5Street is close, city matches exactly80Medium
6City and ZIP match exactly (street does not)75Medium
7Only the city matches65Low
8Only the ZIP matches60Low
9Only the state matches (the address does not)50Low

4. Break the tie

If one candidate has the best rule, it is accepted. If several share it, two tie-breakers are tried in order:

  • SubType. Candidates whose profession matches the row's SubType (for example Registered Nurse) are preferred. It can only promote a candidate: if it matches none or all of them, it is not used.
  • Middle name. A full middle name beats the same initial, which beats an initial against a full name. A lone initial only counts when the row has a profession or a street-level address match. If the row has no middle name, this tie-breaker cannot be used.

If the candidates are still level, the row goes to Needs Review with all of them listed. A pick made by a tie-breaker is never reported as High.

5. Confidence

The confidence comes from the rule that matched (High for rules 1 to 3, Medium for 4 to 6, Low for 7 to 9). It is lowered to Medium when a tie-breaker was needed, when the profession could not be verified because the TypeCode is too vague, or when the row's SubType disagrees with the chosen profile (the comment then says CHECK).

6. Cross-check against similar names

For a Medium or Low pick, the agent looks at the similar names the Matching Agent found. If one of them is live, has a fitting profession and matches the address just as well or better, this may be the wrong person, so the row goes to Needs Review with the proposed match and the alternatives side by side.

7. Optional re-checks

  • Re-verify the chosen ID. One extra OneKey lookup confirms the pick is still Active and Valid. If it is not, the row goes to Needs Review.
  • LLM second opinion. Off by default. When switched on it can only confirm a match or downgrade it to Needs Review. It can never choose a different ID.

5What you get back

OutcomeWhenWhat is written
Matched (High)Rule 1 to 3 address evidence, a fitting profession, no tie-break needed.OneKey ID, score and confidence; a two-line comment.
Matched (Medium)Rule 4 to 6 evidence, or a tie-breaker was used, or the profession could not be verified.As above. Worth a quick look.
Matched (Low)Rule 7 to 9: name, state and profession fit, but the address is weak or missing.As above. Check before relying on it.
Needs ReviewAnything the rules cannot settle safely: nobody passes the gate, no live profile, a tie, a similar name that matches as well, or a skipped row.OneKey ID and score stay blank. The comment says why; the clarification column lists the candidates.
Not processedOneKey or the agent failed on that row.The label API error - not processed or Agent error - not processed. The row is picked up again on the next run.

The five result columns

ColumnNameContent
AAonekey_id_foundThe chosen OneKey ID (blank for Needs Review).
ABmatch_score50 to 100, from the waterfall rule (blank for Needs Review).
ACconfidenceHigh, Medium, Low or Needs Review.
ADcommentsTwo lines. Line 1 is the verdict and the one fact that decided it; line 2 is the chosen profile, or what else was found.
AEclarificationA numbered list, one candidate per line, with the ID, name, profession, address and why it is shown.

For example, a match reads: Matched (High) - the street address, city and ZIP match. followed by the profile line ID · name · Nurse · address. A review reads, for example: Review - 2 profiles match equally well (only the city matches) and nothing separates them. The full reasoning for every row is also kept in decisions.json and shown in the Results tab.

6Safety built in

  • Dry run first. Nothing is written unless Write to sheet is on, and every write needs its own confirmation tick.
  • Never “not found”. The tool does not decide a person does not exist or convert a profile to a contact. Whatever it cannot settle becomes Needs Review, with AA and AB left blank.
  • Only live IDs. Only Active and Valid profiles can be returned as the answer.
  • No false answers from outages. If OneKey fails, the row is marked Not processed and retried. Five OneKey errors in a row stop the run so that nothing is wasted.
  • Ties are not guessed. A tie that the tie-breakers cannot resolve goes to a person, and a tie-broken pick is never High.
  • Finished rows are protected. Rows that already have an answer are skipped unless you tick Reprocess, which overwrites them.
  • Secrets stay out of the page. OneKey and Google credentials live in the server's configuration and are never shown here.

7Where it runs and where the files go

  • Where it runs. The agents run either on your own computer or on AWS Lambda. The web page always uses AWS Lambda; the Streamlit app lets you choose in Processing Mode. On Lambda, the rows are sent in small chunks and the results are read back after each chunk.
  • How long it takes. Plan on roughly 7 seconds per row, but a row can take much longer when OneKey is slow. Progress updates after each batch, so a short list can look quiet for a while. Stop run ends the run after the batch in progress, and the work already done is kept.
  • The run folder. Every run gets a folder named after its run id: one matches file per row (matches/row_N.json), matches_all.txt (the same in readable form), decisions.json, summary.json and a console log, plus input_csv.json for an uploaded CSV. On your computer it is under runs/; on AWS Lambda it is stored in the S3 bucket.
  • Privacy. These files contain HCP names and addresses. The local runs/ folder is excluded from Git.

1What this tool does

Your Google Sheet (or a CSV file you upload) lists healthcare professionals (HCPs) that were submitted for stewardship. Each one needs its correct OneKey ID, the identifier of that person in the OneKey reference database.

This tool does that lookup for you, row by row, and either writes the answer back to the sheet or, for an uploaded CSV, gives it back as a CSV file:

  • It searches OneKey for people with the same name as the row.
  • It compares the address, state and profession of each candidate with the row.
  • It picks the one clear match, or, when it cannot be sure, it hands the row to a person (Needs Review) with a note explaining why.
Safe by design. Nothing is written to the sheet unless you switch on Write to sheet and confirm. The tool never answers “not found” and never deletes anything: if it is unsure, a person decides.

2Before you start

You need three things. Ask your administrator if you do not have them yet.

  1. The API address and the API key. Two pieces of text that connect this page to the tool’s back end. You enter them once (see step 1 below).
  2. Your profiles. Either a Google Sheet (its link, or nothing at all if you work on the default live sheet; the sheet must be shared with the tool’s service account, which your administrator does), or a CSV file on your computer.
  3. A rough idea of which rows to process: usually the rows created on a certain day for a certain Source Name.

How long does it take? About 7 seconds per row (100 rows is roughly 12 minutes). Start with a few rows to get comfortable.

3The process at a glance

Every session follows the same eight steps. The tabs Run and Results at the top are where you do them.

  1. ConnectSettings, once
  2. Choose the inputsheet or CSV, card 1
  3. Choose the rowsRun, card 2
  4. PreviewRun, card 4
  5. Dry runnothing is written
  6. ReviewResults tab
  7. Writeonly when happy
  8. Check the sheetcolumns AA to AE

4Step by step

1Connect (first time only)

Do
  1. Click Settings at the top right.
  2. Paste the API address and the API key you were given.
  3. Leave Rows per call as it is, unless your administrator says otherwise.
  4. Click Save and test.
You will see“Connected”, and two green labels at the top: OneKey API up and Backend connected. Both must be green before you start.

The address and key are stored only in this browser. On a shared computer, open Settings and click Forget when you are done. Re-check (top right) tests the connection again at any time.

2Choose your input data

Card 1 Input Data has two choices at the top. Use Google Sheet or Upload CSV.

Option A: Google Sheet

DoPaste the link of the sheet tab you want to process (copy it from your browser’s address bar while that tab is open). Leave the box empty to use the default live sheet. Then click Check sheet.
You will seeThe tab name, how many rows it has, how many already have a result, and the Source Name values found in it. This confirms you are looking at the right sheet.

The link contains gid=...; that number tells the tool which tab to use.

Option B: Upload a CSV file

Do
  1. Click Upload CSV.
  2. Click the box to choose your file, or drag the file onto it.
  3. Check the column matching that appears (see below), then continue with step 3.
You will seeThe file name, the number of rows and columns, and a list of the tool’s fields with the column of your file matched to each.
  • Format. The first row must hold the column names. Comma, semicolon or tab separated files work. Up to 5,000 rows and 5 MB. If your data is in Excel, use File, Save As, CSV first; .xlsx files cannot be read.
  • Column matching. The tool matches your columns by name (for example First Name, Last Name, State, Zip Code). Three are required: First name, Last name and State. The others (middle name, TypeCode, profession / SubType, address lines, city, ZIP) improve the match, so map them if your file has them. Change any choice that looks wrong with its drop-down. Red means a required field is still unmatched.
  • No file ready? Click Download a template CSV for a file with the right column names.
  • Row numbers are the row numbers you see in Excel: row 1 is the column names, the first profile is row 2.
  • Nothing is written to a Google Sheet. You see the results on screen and download them as CSV (step 6). Remove file lets you choose another file.

Your file is read in your browser. Only a few rows at a time are sent to the back end while the run is in progress.

3Filter the profiles

DoIn card 2 Filter Profiles, set the filters. Only rows that pass all of them are processed. For an uploaded CSV, only Limit and exact rows apply: every row of the file is processed unless you limit it.
FilterWhat it means
Source NameOpen the list and tick one or more sources (filled in for you, for example VeevaCRM). Only rows from the ticked sources are processed. If your source is not in the list, tick Others and type the Source Name exactly as it is written in the sheet. Tick Any source to include every source.
Create DateSpecific Date: only rows created that day; pick it in the Date box. Custom Range: rows created from the Start Date to the End Date, and both of those days are included. A date is always needed (or exact rows, below).
Reprocess rows that already have a resultOff (normal): rows that already have an answer are skipped, and rows marked “not processed” are tried again. On: they are processed again, and if you write, the old answers are overwritten.
Limit0 means all matching rows. A number such as 5 processes only the first 5. Ideal for a first test.
Or pick exact rowsType row numbers exactly as the sheet or file shows them (row 1 is the header), for example 284, 290-295. For a sheet, this ignores the date, source and already-done filters.

4Preview the rows

DoIn card 4 Preview & Run, click Preview matching rows.
You will see“N rows match”, an estimated time, and a table of the rows. Check they are the ones you expect. Nothing is processed yet. Use Columns above the table to choose what it shows (for example City, ZIP, Address Line 1, Create Date or Source Name); this only changes the preview, not the run.
0 rows match? Check the date, the spelling of the Source Name, or whether the rows already have results (tick Reprocess if you really want them again). Check sheet shows the Source Names that exist.

5Do a dry run

DoIn card 3 Processing Mode, keep Write to sheet switched off. The blue banner says DRY RUN. Click Start dry run.
You will seeA Live run section: a progress bar with the number of rows done, the elapsed time and the time left, the current stage, and the latest rows with their result.
  • Keep this page open until the run finishes. Closing the tab ends the run (the browser asks you to confirm).
  • Stop run ends it after the batch in progress. Work already done is kept.
  • Only one run can be active at a time.
  • Under Advanced, Re-verify each chosen ID makes one extra OneKey check per match. It is slower and normally not needed.

6Review the results

DoWhen the run ends, click Open the Results tab (or the Results tab at the top). The Run list at the top picks which run to look at: This session is the one you just did.
You will seeFilters and a search box, and a table with one row per profile. Click a row to see its full comment and candidates.
  • Filter with the coloured labels (click to switch them on or off), or search by name, OneKey ID, state or comment.
  • Click a row to open its detail: the comment (column AD), the clarification (column AE), the source record, every candidate the tool found in OneKey, and the validation steps.
  • Download CSV saves the table for Excel.

Read a few Matched rows and a few Needs Review rows. If the decisions make sense, continue to step 7 (sheet) or download the file (CSV). See “Reading the results” below for what each label means.

CSV runs: besides Download CSV (the results table), a CSV run has Download with input columns. It gives your own file back with the five result columns added at the end (onekey_id_found, match_score, confidence, comments, clarification). Download it before you close or reload the page: the uploaded file is kept in the page only for this session.

7Write the results to the sheet (Google Sheet runs only)

An uploaded CSV has no write step. Its results stay in the page and in the files you download (step 6), and the Write switch is switched off.

Do
  1. Go back to the Run tab. Keep the same filters (or use exact rows).
  2. Switch Write to sheet on. The banner turns orange: LIVE. (If the switch is grey, writing is disabled on the server; ask your administrator.)
  3. Tick the confirmation box Yes, write the results to the sheet. If you also ticked Reprocess or chose exact rows, the box adds “and overwrite existing results”.
  4. Click Start run and write to sheet.
You will seeThe same live panel. The final message says Results were written to the sheet.

The confirmation box clears after every run, so each write needs a fresh tick. Writing processes the rows again from the start, so it takes as long as the dry run did.

8Check the sheet (or your downloaded file)

DoOpen the Google Sheet and look at columns AA to AE of the processed rows. For a CSV run, open the file you downloaded; the same five columns are at the end of each row.
  • Matched rows now have the OneKey ID in AA.
  • Needs Review rows need a person: read the comment in AD, then pick from the candidates listed in AE.
  • Rows marked “API error - not processed” or “Agent error - not processed” are not wrong answers. They will be picked up automatically the next time you run with the normal filters.

5Reading the results

The three outcomes

OutcomeWhat it meansWhat to do
MatchedThe tool found one OneKey profile it can stand behind. AA holds its ID.Nothing, apart from spot checks.
Needs ReviewThe tool could not safely choose one profile (none found, or several equally good). AA and AB are left blank. AD explains why and AE lists the candidates.A steward decides, using AD and AE.
Error - will retryOneKey or the tool failed for this row. It is not an answer.Run again later; the row is picked up again.

Confidence

ConfidenceMeaning
HighSame name, an address in the same state, a matching profession, and the full address, city and ZIP agree. One profile fitted best, with no tie-break needed.
MediumA profile was chosen, but with a caveat: for example several profiles fitted equally well and the tool separated them using SubType or middle name, or the profession could not be confirmed. A tie-broken pick is never shown as High.
LowWeaker evidence, for example only the state matches and the street address does not.
Needs ReviewNo safe single answer (see above).

The score

The score (0 to 100, column AB) shows how closely the row’s address agrees with the OneKey address. 100 means the whole address matched; lower numbers mean a looser match (for example 50 when only the state matches). It is shown only for matched rows.

What the tool writes in the sheet

ColumnContent
AAOneKey ID found (blank for Needs Review)
ABMatch score
ACConfidence (High, Medium, Low, Needs Review, or an “...not processed” marker)
ADComment: the reason for the decision in plain English
AEClarification: for Needs Review, a numbered list of the candidate profiles with their IDs and addresses

How the tool decides (short version)

  1. It keeps only profiles with the exact same name, at least one address in the row’s state, and a profession that fits the row’s TypeCode.
  2. Only profiles that are Active and Valid in OneKey can be returned.
  3. Among those, the profile with the strongest address match wins.
  4. If two or more are equally good, it tries SubType, then middle name. If that does not settle it, the row goes to Needs Review.

The How it works tab shows the same flow as a diagram.

6Good practice

  • Always start with a dry run, and with a small Limit (5 to 10 rows) the first time.
  • Preview before every run to be sure the rows are the ones you mean.
  • Be careful with Reprocess. When you write, it overwrites existing answers, including ones a steward has corrected by hand.
  • Keep the page open and the computer awake until the run ends.
  • Treat results as personal data. Names and addresses are in the Results table and in downloaded CSV files; store and share them as company policy requires.
  • Do not share the API key. On a shared computer, use Forget in Settings when you finish.

7If something goes wrong

What you seeWhat it means and what to do
“Not connected yet” bannerOpen Settings and enter the API address and key (step 1).
“Invalid or missing API key”The key is wrong or has a typo or a space. Copy it again from your administrator.
“Could not get an answer from the API address”The address is wrong, you are off the company network or VPN, or the back end is down. Check the address in Settings, then ask your administrator.
Red label OneKey API downThe OneKey service is not answering. Wait a few minutes and click Re-check. Rows run during an outage are marked “not processed” and retried later.
“Writing is disabled on the server”Only dry runs are allowed. If you are meant to write, ask your administrator to enable it.
“Enter the Create Date”, “Enter the Start Date”, “The End Date cannot be before the Start Date”Pick a date (for a Custom Range, both a Start Date and an End Date).
“Excel files are not supported”Open the file in Excel, choose File, Save As, CSV (comma delimited), and upload the new file.
“Match these required columns”Your file’s columns could not be matched to First name, Last name or State automatically. Choose them in the drop-downs under Match your columns.
CSV file too big or has too many rowsThe limit is 5,000 rows and 5 MB. Split the file into smaller ones.
“The backend does not support CSV upload yet”The back end is an older version. Ask your administrator to update it (version 1.2.0 or newer).
Accented letters look wrong in the resultsSave the file as CSV UTF-8 in Excel and upload it again.
“0 rows match” / “nothing to run”Check the date, the Source Name spelling, and whether the rows already have results. Use Check sheet to see what exists.
Rows marked Error - will retryOneKey or the tool failed on those rows. They are not wrong answers. Run again later with the same filters.
Timeout or “gateway” message during a runA batch took too long. Open Settings and lower Rows per call (for example to 2), then run again.
Message about an expired AWS loginThe person who runs the back end needs to log in to AWS again. Tell your administrator.
Closed the page during a runBatches already finished stay (if Write was on). Start again with the same filters: finished rows are skipped.
Results tab shows only This sessionPast runs are not stored on this server. Download the CSV after each run if you need a record.

Still stuck? Send your administrator the message exactly as shown, plus the Run id from the end of the run (for example web_20261025_110628). Never send the API key.

8Glossary

HCP
Healthcare professional: a doctor, nurse, pharmacist and so on.
OneKey
The reference database of healthcare professionals the tool searches.
OneKey ID (EID)
The unique identifier of one person in OneKey. This is what the tool writes in column AA.
Matching agent
The first stage: searches OneKey and collects every possible candidate.
Validation agent
The second stage: applies the rules to the candidates and decides.
Dry run
A full run that shows decisions on screen but writes nothing to the sheet.
Needs Review
A row the tool leaves for a person to decide, with the reasons and candidates written next to it.
Source Name
The column in the sheet that says where the request came from, for example VeevaCRM.
Create Date
The date the row was created in the sheet.
TypeCode / SubType
Profession information in the row. The tool uses it to check that a candidate is the right kind of professional.
Active and Valid
OneKey status of a profile. Only such profiles can be returned.
CSV
A plain text file of rows and columns that Excel and most tools can save. The first row holds the column names.
Column matching
Telling the tool which column of your CSV holds the first name, last name, state and so on.
Reprocess
Run rows again even though they already have a result.
Rows per call
How many rows are sent to the back end in one batch (Settings). Smaller batches show progress more often and avoid timeouts.
Run id
The name of one run, such as web_20261025_110628. It appears in the Results list.
gid
The number at the end of a Google Sheet link that identifies the tab.