Turn error logs into
structured intelligence
send a raw stack trace. get back severity scores,
root cause analysis, fix suggestions, and debug time estimates.
machine-readable json. every time.
$ curl -X POST https://codetrace-production-1a79.up.railway.app/analyze \
-H "Content-Type: application/json" \
-d '{
"api_key": "your_key",
"log": "ZeroDivisionError: division by zero"
}'
✓ 200 OK — 43ms
{
"status": "success",
"data": {
"error_type": "ZeroDivisionError",
"classification": "runtime_error",
"severity": 6,
"confidence": 0.87,
"estimated_fix_time_minutes": 35,
"fix_suggestion": "add zero-check before dividing"
}
}
-H "Content-Type: application/json" \
-d '{
"api_key": "your_key",
"log": "ZeroDivisionError: division by zero"
}'
✓ 200 OK — 43ms
{
"status": "success",
"data": {
"error_type": "ZeroDivisionError",
"classification": "runtime_error",
"severity": 6,
"confidence": 0.87,
"estimated_fix_time_minutes": 35,
"fix_suggestion": "add zero-check before dividing"
}
}
// how it works
Four steps.
One clean JSON response.
no chatbot. no prose. just structured data your pipeline can act on automatically.
01 —
ingest
send raw log text via POST. python tracebacks, java exceptions, node.js crashes — all accepted.
02 —
parse
multi-language parser extracts file name, line number, error type, and message from messy text.
03 —
classify
scikit-learn classifier categorizes the error and returns a confidence score via predict_proba().
04 —
respond
response engine scores severity, estimates debug time, and returns fix suggestions as structured json.
// endpoints
Three endpoints.
That's all you need.
api key authentication on every request. rate limited to 10 req/min on free tier.
POST
/register
create an account and receive your api key. send email, get key back instantly.
POST
/analyze
core endpoint. send your raw error log, receive full structured diagnostic json.
POST
/feedback
flag wrong classifications. feeds the retraining pipeline. the model gets smarter with usage.
// response format
Not prose.
Structured data.
every field is machine-readable. pipe it to jira, slack, pagerduty, or your own dashboard without parsing natural language.
{
"status": "success",
"data": {
"parsed_log": {
"error_type": "NullPointerException",
"file": "Main.java",
"line": 84
},
"classification": {
"category": "runtime_error",
"confidence": 0.91
},
"severity": 6,
"estimated_fix_time_minutes": 35,
"fix_suggestion": "add null check before calling .getName()"
},
"request_id": 42
}
"status": "success",
"data": {
"parsed_log": {
"error_type": "NullPointerException",
"file": "Main.java",
"line": 84
},
"classification": {
"category": "runtime_error",
"confidence": 0.91
},
"severity": 6,
"estimated_fix_time_minutes": 35,
"fix_suggestion": "add null check before calling .getName()"
},
"request_id": 42
}
// built with
Real stack.
No shortcuts.
every component chosen for a reason. not boilerplate.
FastAPI
api framework
PostgreSQL
primary database
Redis
rate limiting
scikit-learn
ml classifier
Docker
containerization
Railway
deployment
SQLAlchemy
orm
Pydantic
data validation