Official Python SDK and CLI for MissionML — analyze, parse, and visualize competencies using AI-powered workflows.
pip install missionml
missionml login
missionml config show
Local dev API example:
MISSIONML_BASE_URL=http://127.0.0.1:8000 missionml whoami
Notebook-first usage examples:
import missionml as mml
jobs = mml.USAJobs(
api_key="USAJOBS_KEY",
user_agent_email="[email protected]",
)
resp = jobs.search_current(
Keyword="data scientist",
LocationName="Washington, DC",
ResultsPerPage=10,
Page=1,
)
items = mml.usajobs.current_items(resp)
len(items), items[0].keys()
Historic/past announcements:
resp = jobs.search_historic(
Keyword="machine learning",
Page=1,
ResultsPerPage=10,
)
items = mml.usajobs.historic_items(resp)
len(items)
Shape a job announcement into MissionML parse input:
job = items[0]
parse_req = mml.usajobs.to_parse_request(
job,
source_name="USAJOBS: data scientist",
client_request_id="demo-001",
)
All search parameters are passed through as keyword arguments, so you can use any supported USAJOBS Search or Historic JOA query params.
Parse competencies from text:
import missionml as mml
studio = mml.MissionML(api_key="YOUR_MISSIONML_KEY")
result = studio.parse_competencies("I write Python and analyze data.")
result.competencies
Batch parsing (streaming by default with fallback):
items = [{"text": "Python data analysis"}, {"text": "Stakeholder management"}]
batch = studio.parse_competencies_batch(items, stream=True, verbose=True)
batch["parse_ids"]
batch["competencies"]
Compare 2+ competency lists or parse results:
import missionml as mml
studio = mml.MissionML(api_key="YOUR_MISSIONML_KEY")
r1 = studio.parse_competencies("Python, SQL, and data analysis.")
r2 = studio.parse_competencies("Talking with stakeholders and SQL.")
xw = studio.crosswalk(r1, r2)
xw
Raw lists + labels:
xw = studio.crosswalk(["Python", "Speaking"], ["Talking", "SQL"])
xw = xw.name(["resume", "job_posting"])
Records output:
xw = studio.crosswalk(["Python"], ["SQL"], return_format="records")
xw["matrix"]
xw["common"]
xw["unique"]
xw["overlap"]
Generate a report from demo data:
import missionml as mml
studio = mml.MissionML()
report = mml.load_demo_data()[0]
studio.generate_rrdoc(report=report, filepath="out.docx")
Create your own report:
from datetime import date
from missionml.reports import DocumentHeader, SeriesMetadataRow, SeriesProfile, ExternalTaxonomyReport
report = ExternalTaxonomyReport(
header=DocumentHeader(
title="Reclassification and Requalification: External Job Taxonomy",
version="1.0",
date=date(2026, 1, 6),
occupational_series="0343 - Management and Program Analysis",
),
series_profile=SeriesProfile(
series_metadata=[
SeriesMetadataRow(field="Series Code", value="0343"),
SeriesMetadataRow(field="Series Title", value="Management and Program Analysis"),
]
),
)
print(report.view())
studio.generate_rrdoc(report=report, filepath="out.docx")